2011-02-08 15 views
5

私はMonoTouchアプリケーションでThreadPoolを使用してバックグラウンドスレッドの数を管理しています。 ThreadPoolをスレッド外に出してスレッド内にあれば、Async Webリクエストが発生します.Webリクエストは2番目のスレッドから生成されますか?もしそうなら、そのスレッドはThreadPoolから取り除かれますか?ThreadPool.QueueUserWorkItemスレッド内で非同期呼び出しを使用

このようなことのベストプラクティスは何ですか? Webリクエストが同期呼び出しであれば、現在のスレッド数を減らすことができますか?

ThreadPool.QueueUserWorkItem(callback => 
{ 
    WebClient client = new WebClient(); 
    client.DownloadStringAsync(new Uri("http://www.google.com/")); 
    client.DownloadStringCompleted += (a,b) => Console.WriteLine("Done"); 
}); 
+1

はい、スレッドプールから取り出され、消耗の危険があります。この特定のシナリオでダブル・アシンクのポイントは何ですか? – bzlm

+1

あなたは[マルチタスキング中にマルチタスクをしたいですか?](http://encyclopediadramatica.com/Sup_Dawg) –

+0

クイック返信をありがとう。私の現在の実装では、すでに非同期のWebレクチャーが発生しているユーティリティクラスを使用しています。今は、TouchPoolを導入してタッチイベントを管理しています。ダブル非同期を実行することに気付きました。長期的な問題を理解したい。疲労が最も顕著に見える。 –

答えて

0

あなたがそこに示されているように、後でスレッドプールコールバックを終了している場合は、問題ありません。 1つのスレッドプールコールタイムラインを別のスレッドプールコールタイムラインに置き換えるだけです。

関連する問題