ThreadPool.QueueWorkItem メソッドがどのように機能するかを理解しようとしています。しかし、それがどのように機能しているのか理解できませんでした。
ThreadPool をテストする簡単な例を作成します。このコードを実行すると、すぐにループして Thread.Sleep() 行で停止します。では、ThreadPool はここで何をしますか。10000 メソッドを内部コレクションに保存してから、非同期で実行しますか。(いくつかの計算によると、内部的にスレッド数は何でもかまいません=>これは私が知っていることです)
- キューがある場合 (あるはず)、キューで待機しているアイテム (メソッド) の数を取得できますか?
2.例では WriteLine メソッドは単純ですが、私の実際のアプリケーションでは、50000 個のアイテムをループして、配列内の各アイテムに対してデータベースの選択/挿入/更新 vb.. を呼び出す Web サービス メソッドを使用しています。この種のことをそのようにすることは可能ですか?
class Program
{
static void Main(string[] args)
{
new Program().Looper();
}
public void Looper()
{
for (int i = 0; i < 10000; i++)
{
ThreadPool.QueueUserWorkItem(WriteLine, i);
}
Thread.Sleep(10000);
}
public void WriteLine(object str)
{
Debug.WriteLine((int)str);
}
}