Просто напишите эти простые коды ниже в вашем MainPage
:
private void Button_Click(object sender, RoutedEventArgs e)
{
// It is not recommended to call Wait() in a UI thread. I write this only for a test.
DoAsync().Wait();
// This line enters on 10.0.17134 / 10.0.16299
// and never enters on 10.0.17763.
}
private async Task DoAsync()
{
await ApplicationData.Current.LocalFolder.CreateFileAsync("walterlv", CreationCollisionOption.ReplaceExisting);
}
Таргетинг 10.0.17134 или ниже
Обычно, если DoAsync
является реальной асинхронной операцией, Wait()
вызывает тупик. Но если вы запустите Button_Click
, вы обнаружите, что тупика не бывает.
Попробуйте нажать кнопку несколько раз, и после случайного подсчета кликов возникнет тупик.
Я тоже пробовал 10.0.116299.
Таргетинг 10.0.17763
Сразу же после нажатия кнопки происходит тупик.
Моя путаница
В чем разница между асинхронными операциями выше или ниже 10.0.17134?
Замечание : не рекомендуется вызывать Wait()
или Result
в потоке пользовательского интерфейса, но я запутался в различном поведении между ними, поэтому я написал код тестирования выше .