Task<>之间有什么区别和IAsyncOperation<>

时间:2012-04-05 18:48:26

标签: .net task-parallel-library microsoft-metro

我正在写一个地铁应用程序。

这有效:

    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<>

有什么区别?为什么有两种不同的类型?我该如何修复第二个样本?

1 个答案:

答案 0 :(得分:19)

IAsyncOperation是一个城域异步操作。您可以await IAsyncOperation

但是,您无法将IAsyncOperationTask.WhenAllTask.WhenAny一起使用。要使用这些方法使用IAsyncOperation个实例,您应该调用StartAsTask扩展方法,如下所示:

var folder = Windows.Storage.ApplicationData.Current.LocalFolder;
var fileTask = folder.GetFileAsync("text.txt").StartAsTask();