我正在写一个地铁应用程序。
这有效:
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");
第一个返回任务<>,第二个返回IAsyncOperation<>
有什么区别?为什么有两种不同的类型?我该如何修复第二个样本?
答案 0 :(得分:19)
IAsyncOperation
是一个城域异步操作。您可以await
IAsyncOperation
。
但是,您无法将IAsyncOperation
与Task.WhenAll
或Task.WhenAny
一起使用。要使用这些方法使用IAsyncOperation
个实例,您应该调用StartAsTask
扩展方法,如下所示:
var folder = Windows.Storage.ApplicationData.Current.LocalFolder;
var fileTask = folder.GetFileAsync("text.txt").StartAsTask();