【问题标题】:Other ways to start a task in an asynchronous manner以异步方式启动任务的其他方式
【发布时间】:2013-08-26 13:28:53
【问题描述】:

还有哪些其他方法可以创建任务以开始并获得响应与下面显示的代码相同的概念:(使用 .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);

【问题讨论】:

    标签: c# asynchronous task-parallel-library task response


    【解决方案1】:

    如果您使用的是 .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;
    }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-19
      • 2016-10-23
      • 1970-01-01
      • 2016-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多