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

1 回答 1

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;
}

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

于 2013-08-26T13:33:20.800 回答