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)にドロップして、ある種のコンシューマー/プロデューサーのペアを構築します(そのコレクションを引数として呼び出しに渡します)
  • データが存在するときに呼び出されるある種のコールバック「dataready」を渡します(DownloadStringCompletedと同様)
  • その新しいスレッドでデータを処理し、必要な場所で結果をコミットするだけです
于 2012-08-27T21:46:45.443 に答える