Какая разница между:Ожидание фонового потока в C#
public class Worker
{
public static void Execute()
{
ExecuteInBackgroundThread().Wait();
}
private static Task ExecuteInBackgroundThread()
{
return Task.Run(() =>
{
// do some long running operation
});
}
}
и
public class Worker
{
public static void Execute()
{
ExecuteInBackgroundThread().Wait();
}
private static async Task ExecuteInBackgroundThread()
{
await Task.Run(() =>
{
// do some long running operation
});
}
}
Я заметил, что, называя вторую версию Worker.Execute()
из пользовательского интерфейса нитку мой телефон приложение для Windows застревает.
Вместо этого, используя первую версию, все работает нормально.
Является ли вторая версия ExecuteInBackgroundThread
фактическим возвратом Task<T>
, что можно ожидать? Но если это не так, должен ли компилятор не давать ошибку, говоря, что мы ничего не возвращаем?
Спасибо, я действительно заметил, что не было тупика, запускающего его из тестового бегуна. –