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?
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();