Два BackgroundWorkers, один список <T> - PullRequest
3 голосов
/ 04 октября 2011

Мне нужно, чтобы эти 2 потока постоянно работали над общим списком, один поток должен добавлять элементы в список, другой должен «потреблять» элементы (просто посмотрите на них, сделайте то, что нужно сделать, углубляясь в некоторые из них).свойства элемента, а затем удалите его).

ПРИМЕЧАНИЕ. Я новичок, поэтому любые знания о том, как это сделать, приветствуются.

Я думаю, что 2 BackgroundWorkers со временем(1) цикл (принимая отмены, конечно), с объектом List, передаваемым как Аргумент обоим.

Возможно ли это / безопасно?Что я должен сделать, чтобы сделать его безопасным?

(Если вам нужна дополнительная информация, пожалуйста, укажите, что в комментариях, и я отредактирую это)

Спасибо!

1 Ответ

4 голосов
/ 04 октября 2011

Не безопасно. Вам нужно будет блокировать как чтение, так и письмо. Это классическая проблема производителя / потребителя.

http://blogs.msdn.com/b/csharpfaq/archive/2010/08/12/blocking-collection-and-the-producer-consumer-problem.aspx

Если вы используете .NET 4, вы можете эффективно использовать BlockingCollection здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...