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 StartAsTask
extension method, as such:
var folder = Windows.Storage.ApplicationData.Current.LocalFolder;
var fileTask = folder.GetFileAsync("text.txt").StartAsTask();
StartAsTask
has changed to <code>AsTask</code>, which is in <code>System.Runtime.WindowsRuntime</code> - Stephen Cleary 2014-06-03 22:39