Poniższy kod zostanie zablokowany na zawsze.Task.Delay nigdy nie kończy się
public async Task DoSomethingAsync()
{
await Task.Delay(2000);
}
private void Button_Click(object sender, RoutedEventArgs e)
{
DoSomethingAsync().Wait();
// Task.Delay(2000).Wait();
}
Gdybym przełączyć rozmowę do DoSomethingAsync
z zakomentowanym kodzie, zachowuje się zgodnie z oczekiwaniami. Podejrzewam, że w jakiś sposób zagnieżdżone oczekiwania powodują impas, ale nie jestem pewien, dlaczego i jak to naprawić.
możliwe duplikat [an asynchroniczny/przykład, że powoduje zakleszczenie oczekiwać] (http://stackoverflow.com/questions/15021304/an-async-await-example-that-causes-a -deadlock) –