2012-04-05 69 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

相關問題