Похоже, что UWP Async IO является реальными асинхронными операциями только с 10.0.17763, но не реальными ранее. Как это объяснить? - PullRequest
0 голосов
/ 05 ноября 2018

Просто напишите эти простые коды ниже в вашем 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 в потоке пользовательского интерфейса, но я запутался в различном поведении между ними, поэтому я написал код тестирования выше .

...