2012-04-05 8 views
13

私はメトロアプリを書いています。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 <>

を返すを返します差?なぜ2つの異なるタイプがありますか? 2番目のサンプルを修正するにはどうしたらいいですか?

+1

あなたは、二番目は動作しません何を意味するのですか?それは何をするためのものか? – svick

答えて

19

IAsyncOperationは、メトロ非同期操作です。 awaitIAsyncOperationとすることができます。

Task.WhenAllまたはTask.WhenAnyと使用することはできません。これらの方法でIAsyncOperationのインスタンスを使用するには、StartAsTask拡張メソッドを呼び出す必要があります、例えば:

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

StartAsTask()拡張メソッドはどのような名前空間を定義していますか? –

+8

'StartAsTask'が' System.Runtime.WindowsRuntime'にある['AsTask'に変更されました](http://msdn.microsoft.com/en-us/library/hh779747(v=vs.110).aspx) )。 –

関連する問題