Ответ 1
Я бы лично использовал очередь производителя/потребителя. Это эффективно то, что представляет собой цикл сообщений WinForms, как раз в форме Windows Forms.
Обратите внимание, что если вы можете использовать .NET 4.0, collections встроен в структуру, которая делает это очень просто. В частности, используя BlockingCollection<T>
, обернутый вокруг ConcurrentQueue<T>
сделает то, что вы хотите.
Я бы лично не использовал код GeeksCafe - я бы инкапсулировал природу производителя/потребителя в свой собственный класс, который обертывает очередь, а не обрабатывает любую очередь таким образом с помощью методов расширения. В частности, вам нужно, чтобы все стороны правильно обрабатывали очередь, что означает, что мне лучше дать ей свой API.