What is the difference between Task<> and IAsyncOperation<>
.net, microsoft-metro, task-parallel-library
Solution
`IAsyncOperation` is a metro asynchronous operation. You can `await` an `IAsyncOperation`.
However, you can't use `IAsyncOperation` with `Task.WhenAll` or `Task.WhenAny`. To use `IAsyncOperation` instances with these methods, you should call the `AsTask` extension method (formerly `StartAsTask`) from `System.Runtime.WindowsRuntime`, as such:
var folder = Windows.Storage.ApplicationData.Current.LocalFolder;
var fileTask = folder.GetFileAsync("text.txt").AsTask();
Problem
I am writing a metro app. This works: ``` HttpClient client = new HttpClient(); var bytes = await client.GetByteArrayAsync(new Uri("www.microsoft.com")); ``` This doesn't: ``` var folder = Windows.Storage.ApplicationData.Current.LocalFolder; var file = await folder.GetFileAsync("text.txt"); ``` The first one returns a Task<>, the second one return an IAsyncOperation<> What is the difference? Why are there two different types? How can I fix the second sample?