2013-08-26 46 views
1

什么是一些其他的方式来创建一个任务开始,并获得与代码的同一概念的回应如下:(使用.NET 4)其他方式以异步方式启动任务

var uri = new Uri(website.SiteUrl); 
var myReq = (HttpWebRequest)WebRequest.Create(uri); 

var task = Task<WebResponse>.Factory.FromAsync(
       myReq.BeginGetResponse, 
       myReq.EndGetResponse, 
       null); 

回答

4

如果您使用的是.NET 4.5

var task = myReq.GetResponseAsync(); 

对.NET 4.0,你可以写这样的事情

public Task<HttpWebResponse> GetAsync(HttpWebRequest req) 
{ 
    var tcs = new TaskCompletionSource<HttpWebResponse>(); 
    req.BeginGetResponse(e => 
     { 
      if(e.IsCompleted) 
       tcs.TrySetResult((HttpWebResponse)req.EndGetResponse(e)); 
     }, null); 
    return tcs.Task; 
} 

但我不看到比你当前的代码更好的东西。

+0

对不起使用.Net 4 –