Могу попробовать, пока решил все что после await в lock обернуть
Берешь счётчик "версии" данных и атомарно инкрементируешь его в синхронной части обработчика, после чего локально сохраняешь значение к себе синхронно. Потом стартуешь асинхронную работу. Обновляешь UI только если версия не поменялась (читать надо атомарно)