2012-04-05 57 views
13

有什么区别我正在写一个metro应用程序。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"); 

第一个返回任务<>,第二个返回IAsyncOperation <>

什么区别?为什么有两种不同的类型?我怎样才能修复第二个样本?

+1

你是什么意思,第二个不行?它有什么作用? – svick 2012-04-05 19:20:17

回答

19

IAsyncOperation是一个城域异步操作。你可以awaitIAsyncOperation

但是,您不能使用IAsyncOperationTask.WhenAllTask.WhenAny。要使用IAsyncOperation情况下使用这些方法,你应该调用StartAsTask扩展方法,因为这样的:

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

什么名称空间是定义的StartAsTask()扩展方法? – 2014-06-03 20:39:27

+8

'StartAsTask'已更改为['AsTask',它位于System.Runtime.WindowsRuntime中](http://msdn.microsoft.com/zh-cn/library/hh779747(v = vs.110).aspx )。 – 2014-06-03 22:39:06

相关问题