私は自分のアプリケーションのストレス テストを行っており、メソッドを呼び出す何百ものスレッドを生成する簡単なテストを作成しました。以下のコードは、1000 スレッドと 100 ミリ秒の遅延で問題なく動作します。
以下のコードで、スレッド数が 2000 で遅延が 100 の場合、radButtonEmptyThread_Click の catch ステートメントでエラー Cannot load the "shell32.dll" DLL into memory が発生します
- これを修正するにはどうすればよいですか?
- 「Debug.Print(count.ToString());」と書かれた値 は常に 1000 です - なぜですか?
C# コード
private void radButtonEmptyThread_Click(object sender, EventArgs e)
{
try
{
for (int i = 0; i < int.Parse(radTextBoxWaitThreads.Text); i++)
{
Thread Trd = new Thread(() => EmptyThreadRequest(int.Parse(radTextBoxFloodDelay.Text), i));
Trd.IsBackground = true;
Trd.Start();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
}
private void EmptyThreadRequest(int delay, int count)
{
try
{
System.Threading.Thread.Sleep(delay);
Debug.Print(count.ToString());
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
}
}