Sometimes, when running a Mono .NET application (it seems to not depend on the input data, as it does not change), I run into following situation: when trying to Dequeue an element from a (non-empty, I check its Count beforehand) Queue, an exception is thrown:
Unhandled Exception: System.InvalidOperationException: Operation is not valid due to the current state of the object at System.Collections.Generic.Queue
1[DBWorkItem].Peek ()[0x00000] at System.Collections.Generic.Queue
1[DBWorkItem].Dequeue () [0x00000] at DBProcessor.process (System.Object q) [0x0006b] in <...>
Though I can certainly catch this exception, the element is dequeued and lost. Has anyone else encountered this behavior, too?
Do you have multiple threads using this queue? It may be non-empty when you check the count, but then empty when you try to peek the item.
If you have a short but complete program demonstrating the problem, we could tell for sure. Of course, it's possible that it's a Mono bug, although my experience is that system frameworks are usually more robust than the code calling into them.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With