Правильная реализация многопоточности .NET4
Необходима правильная реализация модели многопоточности под .NET4 с учетом заявленных нами требований. При этом нужна
максимальная эффективность, оптимательность и скорость работы модели. Задачу я реализовал, но мне нужна более правильная
и профессинальная реализация (или хотя бы ваша объективная критика моего варианта).
Общие моменты:
1. возможность запускать обработку очереди задач в многопоточном режиме (много потоков,у которых одинаковая логика работы,
берут элементы очереди и обрабатывают, пока очередь не опустеет)
2. возможность выдавать репорт (например лог) из рабочего потока в главный поток (GUI)
3. возможность приостанавливать (ставить на паузу все потоки сразу), а также отменять работу (полностью останавливать все потоки)
При этом желательно иметь возможность видеть что УЖЕ отменены или УЖЕ остановлены ВСЕ потоки (чтобы отображать это для
пользователя). Последнее актуально в виду того, что потоки останавливаются (или ставятся на паузу) не сразу,
а только когда дойдут до места проверки нужно ли остановиться (или стать на паузу).
while (Form1.pauseFlag)
И
if (worker.CancellationPending)
4. возможность выдавать MessageBox о завершении работы всех потоков (при этом должен выдаваться только 1 MessageBox,
когда завершены ВСЕ потоки, а не для каждого из завершенных потоков.)
5. возможность отображать работающее в данный момент количество потоков, а также размер очереди.
Тестовый проект в прикрепленном архиве