В чем разница между Task <> и IAsyncOperation <>
Я пишу приложение метро.
Это работает:
HttpClient client = new HttpClient();
var bytes = await client.GetByteArrayAsync(new Uri("www.microsoft.com"));
Это не означает:
var folder = Windows.Storage.ApplicationData.Current.LocalFolder;
var file = await folder.GetFileAsync("text.txt");
Первый возвращает Task < > , второй возвращает IAsyncOperation < >
В чем разница? Почему существуют два разных типа? Как я могу исправить второй образец?
Ответы
Ответ 1
IAsyncOperation
- асинхронная операция метро. Вы можете await
IAsyncOperation
.
Однако вы не можете использовать IAsyncOperation
с Task.WhenAll
или Task.WhenAny
. Чтобы использовать экземпляры IAsyncOperation
с этими методами, необходимо вызвать StartAsTask
расширения StartAsTask
, как таковой:
var folder = Windows.Storage.ApplicationData.Current.LocalFolder;
var fileTask = folder.GetFileAsync("text.txt").AsTask();