2013-05-30 2 views
0

Я использую C# ConcurrentQueue в VS2010. Переменная ConcurrentQueue является статической, а объекты помещаются в очередь из разных потоков. В одном другом непрерывно работающем потоке я де-очередью этот объект & хранящий в базе данных. Сразу после заражения объекта он также отправляется в службу wcf. В последнее время мы обнаружили, что несколько объектов отправляются &, которые регистрируются службой wcf, но не регистрируются там, где они выгружаются.Убедитесь, что ConcurrentQueue помещает объект в объект или нет

Вопрос: Возможно ли, что объект не находится в очереди? Как обеспечить, поставлен ли объект в очередь или нет?

Примечание: при удалении объекта не регистрируется исключение. Новые объекты получены & в очереди около 1000/мин.

+5

Где код? – Jon

+0

Enqueue всегда должен работать, но, возможно, придется ждать блокировки, возможно, он просто заблокирован? Не видя ваши очереди в очереди или отправляя запрос WCF, я не могу предложить никаких предложений. –

+0

Невозможно вставить код здесь. Возможно ли, что объект будет удален, если блокировка недоступна? – KKR

ответ

0

Я не уверен в каких-либо событиях вместе с ConcurrentQueue. В качестве альтернативы, я предлагаю вам создать класс и обернуть ваш ConcurrentQueue, а затем выставить методы на Enqueue & Dequeue (что фактически Enqueue & Элементы Dequeue из вашего объекта ConcurrentQueue). Затем создайте два события (два пользовательских события, которые также должны быть частью pf вашего объекта-оболочки), которые могут быть вызваны в вашем Enqueue & Методы Dequeue, которые будут вызывать ваш метод обслуживания, когда и когда потоки выполняют операцию Enqueue или Dequeue.

Смежные вопросы