后台线程中的HttpWebRequest

时间:2012-08-27 21:26:27

标签: c# .net multithreading httpwebrequest

我想在一个单独的线程中执行HttpWebRequest

例如我有:

public string GetPage(string url)
{
    string html = new WebClient().DownloadString(url);
    return html;
}

如何在一个单独的线程中运行它而不会有太多麻烦?

我尝试过启动一个简单的线程,但我不知道如何返回HTML。

2 个答案:

答案 0 :(得分:0)

要做到这一点"没有太多麻烦",请使用c#5.0

public async void DoWork(string url)
{
    string page = await new WebClient().DownloadStringTaskAsync(url);
    //Caller thread will not be blocked but you will be able to
    //continue your work at this point after BG thread 
    //(executing "DownloadStringTaskAsync") has downloaded the page

}

答案 1 :(得分:0)

“没有太多麻烦”不太可能......

选项:

  • 将结果放入某种同步集合(即ConcurentQueue)以构建某种消费者/生产者对(将该集合作为参数传递给您的电话)
  • 传递某种回调“数据就绪”,当数据出现时将调用该数据(类似于DownloadStringCompleted
  • 只需处理该新线程上的数据并在任何需要的地方提交结果