2012-04-05 14 views
13

Ich schreibe eine U-Bahn-App.Was ist der Unterschied zwischen Aufgabe <> und IAsyncOperation <>

Dies funktioniert:

HttpClient client = new HttpClient(); 
    var bytes = await client.GetByteArrayAsync(new Uri("www.microsoft.com")); 

Dies gilt nicht:

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

Die erste gibt eine Aufgabe <>, die zweite Rück eine IAsyncOperation <>

Was ist der Unterschied? Warum gibt es zwei verschiedene Arten? Wie kann ich die zweite Probe reparieren?

+1

Was meinen Sie, wird der zweite nicht? Was tut es? – svick

Antwort

19

IAsyncOperation ist ein asynchroner Metro-Betrieb. Sie können await ein IAsyncOperation.

Sie können jedoch IAsyncOperation mit Task.WhenAll oder Task.WhenAny nicht verwenden. Um IAsyncOperation Instanzen mit diesen Methoden zu verwenden, sollten Sie die StartAsTask Erweiterungsmethode, die als solche bezeichnen:

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

Welcher Namespace ist die StartAsTask() - Erweiterungsmethode? –

+8

'StartAsTask' hat sich in' 'AsTask' geändert, das sich in' System.Runtime.WindowsRuntime' befindet (http://msdn.microsoft.com/en-us/library/hh779747 (v = vs.110) .aspx)). –

Verwandte Themen