2012-04-05 41 views
13

Tôi đang viết một ứng dụng tàu điện ngầm là gì.Sự khác biệt giữa Tác vụ <> và IAsyncOperation <>

này hoạt động:

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

này không:

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

Người đầu tiên trả về một nhiệm vụ <>, điều thứ hai trả về một IAsyncOperation <>

là gì Sự khác biệt? Tại sao có hai loại khác nhau? Làm thế nào tôi có thể sửa mẫu thứ hai?

+1

Ý anh là gì, điều thứ hai không hoạt động? Nó làm gì? – svick

Trả lời

19

IAsyncOperation là một hoạt động không đồng bộ của tàu điện ngầm. Bạn có thể await một IAsyncOperation. Tuy nhiên, bạn không thể sử dụng IAsyncOperation với Task.WhenAll hoặc Task.WhenAny. Để sử dụng IAsyncOperation hợp với các phương pháp này, bạn nên gọi phương thức StartAsTask mở rộng, như vậy:

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

Không gian tên nào là phương thức mở rộng StartAsTask() được định nghĩa? –

+8

'StartAsTask' đã thay đổi thành [' AsTask', trong 'System.Runtime.WindowsRuntime'] (http://msdn.microsoft.com/en-us/library/hh779747 (v = vs.110) .aspx). –

Các vấn đề liên quan