C# 以异步方式启动任务的其他方法

C# 以异步方式启动任务的其他方法,c#,asynchronous,task-parallel-library,task,response,C#,Asynchronous,Task Parallel Library,Task,Response,使用下面所示的相同代码概念创建任务并获得响应的其他方法有哪些:(使用.NET4) var uri=新的uri(website.SiteUrl); var myReq=(HttpWebRequest)WebRequest.Create(uri); var task=task.Factory.fromsync( myReq.BeginGetResponse, myReq.EndGetResponse, 无效); 如果您使用的是.Net 4.5 var task = myReq.GetResponse

使用下面所示的相同代码概念创建任务并获得响应的其他方法有哪些:(使用.NET4)

var uri=新的uri(website.SiteUrl);
var myReq=(HttpWebRequest)WebRequest.Create(uri);
var task=task.Factory.fromsync(
myReq.BeginGetResponse,
myReq.EndGetResponse,
无效);

如果您使用的是.Net 4.5

var task = myReq.GetResponseAsync();
对于.NET4.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;
}
公共任务GetAsync(HttpWebRequest请求) { var tcs=new TaskCompletionSource(); 请求开始响应(e=> { 如果(如已完成) tcs.TrySetResult((HttpWebResponse)req.EndGetResponse(e)); },空); 返回tcs.Task; }
但是我看不到比您当前的代码更好的东西。

如果您使用的是.Net 4.5

var task = myReq.GetResponseAsync();
对于.NET4.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;
}
公共任务GetAsync(HttpWebRequest请求) { var tcs=new TaskCompletionSource(); 请求开始响应(e=> { 如果(如已完成) tcs.TrySetResult((HttpWebResponse)req.EndGetResponse(e)); },空); 返回tcs.Task; } 但我看不到比你现在的代码更好的东西