Я испытываю стресс-тестирование своего приложения и написал простой тест, чтобы создать сотни потоков, которые вызывают метод. Приведенный ниже код отлично работает для 1000 потоков и задержки 100 мс.Ошибка теста стресс-теста
В коде ниже, когда количество потоков 2000 и задержка 100 я получаю сообщение об ошибке Не удается загрузить «shell32.dll» DLL в память в заявлении на вылов radButtonEmptyThread_Click
- Как Я это исправить?
- Значение, написанное «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());
}
}
}
Но зачем ему получить эту странную ошибку Shell32? – Ameen
@Ameen Я предполагаю, что это потому, что ОС не может обрабатывать сразу несколько потоков. –
если я использую задачи, я не получу ошибки - а как насчет Ameens очень правильный вопрос? 2. имеет смысл, но какое здесь решение? – user1438082