问题
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?
回答1:
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").AsTask();
来源:https://stackoverflow.com/questions/10034239/what-is-the-difference-between-task-and-iasyncoperation