0

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

例如我有:

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

我如何在没有太多麻烦的情况下在单独的线程中运行它?

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

4

2 回答 2

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

}
于 2012-08-27T21:34:53.517 回答
0

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

选项:

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