Я создаю приложение UWP, которое, очевидно, содержит несколько ожидаемых вызовов асинхронных методов.
В одном из обработчиков событий мне нужно убедиться, что цепочка вызовов выполняется в одном потоке.
Я пытался сделать свою "синхронизирующую" версию асинхронных методов, которая мне нужна, в ожидании и получении результата, что-то вроде этого:
public static T Sync<T>(this Task<T> task)
{
if (task == null)
return default(T);
return task.ConfigureAwait(false).GetAwaiter().GetResult();
}
Или даже еще более брутально:
public static T Sync<T>(this Task<T> task)
{
if (task == null)
return default(T);
task.Wait();
return task.Result;
}
Но я столкнулся с проблемой тупика, описанной в нескольких других блогах, потому что я работаю в потоке пользовательского интерфейса.
Есть ли способ достичь моей цели?