由于对象的当前状态,操作无效

时间:2010-04-12 15:09:25

标签: c# .net linux mono

有时候,当运行Mono .NET应用程序时(它似乎不依赖于输入数据,因为它没有改变),我遇到以下情况: 当试图从一个(非空的,我事先检查它的Count)队列中取出一个元素时,会抛出一个异常:

  

未处理的异常:System.InvalidOperationException:由于对象的当前状态,操作无效   在System.Collections.Generic.Queue 1[DBWorkItem].Peek ()[0x00000] at System.Collections.Generic.Queue 1 [DBWorkItem] .Dequeue()[0x00000]     在< ...>

中的DBProcessor.process(System.Object q)[0x0006b]

虽然我当然可以捕获此异常,但该元素已经出列并丢失。还有其他人遇到过这种行为吗?

1 个答案:

答案 0 :(得分:5)

您是否有多个线程使用此队列?检查计数时它可能是非空的,但是当你试图查看项目时它可能是空的。

如果您有一个简短但完整的程序来证明问题,我们可以肯定地说出来。当然,它可能是一个Mono bug,虽然我的经验是系统框架通常比调用它们的代码更健壮。