Правильная реализация многопоточности .NET4

Александр16 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
18.12.2012

Необходима правильная реализация модели многопоточности под .NET4 с учетом заявленных нами требований. При этом нужна

максимальная эффективность, оптимательность и скорость работы модели. Задачу я реализовал, но мне нужна более правильная

и профессинальная реализация (или хотя бы ваша объективная критика моего варианта).

Общие моменты:

1. возможность запускать обработку очереди задач в многопоточном режиме (много потоков,у которых одинаковая логика работы,

берут элементы очереди и обрабатывают, пока очередь не опустеет)

2. возможность выдавать репорт (например лог) из рабочего потока в главный поток (GUI)

3. возможность приостанавливать (ставить на паузу все потоки сразу), а также отменять работу (полностью останавливать все потоки)

При этом желательно иметь возможность видеть что УЖЕ отменены или УЖЕ остановлены ВСЕ потоки (чтобы отображать это для

пользователя). Последнее актуально в виду того, что потоки останавливаются (или ставятся на паузу) не сразу,

а только когда дойдут до места проверки нужно ли остановиться (или стать на паузу).

while (Form1.pauseFlag)

И

if (worker.CancellationPending)

4. возможность выдавать MessageBox о завершении работы всех потоков (при этом должен выдаваться только 1 MessageBox,

когда завершены ВСЕ потоки, а не для каждого из завершенных потоков.)

5. возможность отображать работающее в данный момент количество потоков, а также размер очереди.

Тестовый проект в прикрепленном архиве