У меня есть событие, в котором я получаю изменяемое значение. При каждом событии создаю поток и проверяю одной функцией, дошло ли значение до какого-нибудь уровня. Событие возникает каждую секунду, а порой и 2-3 события в секунду. В самой функции я поставил lock. Соответственно, потоки не успевают обрабатывать так быстро и при отладке я увидел, что создано их штук 40. Как можно ограничить создание потоков до 10 там. Ну, или как-нибудь по-другому реализовать задачу?
private void waitTrade(bool isNewBar)
{
lock (lockerTrade)
{
.............
}
}
Thread th = new Thread(() => waitTrade(false));
th.Start(); // две строчки прописаны в самом событии
Используйте ThreadPool, и добавляйте ему задачи. Вы можете даже выставить вручную максимальное количество потоков методом SetMaxThreads (по умолчанию выставляется значение зависящие от количество ядер процессора).
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости