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

标签 c# .net linux mono

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

Unhandled Exception: System.InvalidOperationException: Operation is not valid due to the current state of the object at System.Collections.Generic.Queue1[DBWorkItem].Peek ()[0x00000] at System.Collections.Generic.Queue1[DBWorkItem].Dequeue () [0x00000] at DBProcessor.process (System.Object q) [0x0006b] in <...>

虽然我当然可以捕捉到这个异常,但该元素已出队并丢失。有没有其他人也遇到过这种行为?

最佳答案

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

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

关于c# - 由于对象的当前状态,操作无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2623073/

相关文章:

.net - 在锁内返回有什么区别吗?

java - 树莓派更新java路径

linux - 使用共享库版本的 CMake 最佳实践

c# - 将数据表转换为json时出错

c# - 在数据库中创建条目会复制传递的变量而不是 FK

javascript - 如何在特定时间从 javascript 调用 C# 中的函数

c# - Azure 平台/Dotnet 核心上可靠的图像处理

.net - 将不受信任的格式字符串传递给 string.Format 是否安全?

c# - 扩展类的问题和用方法覆盖

linux - hrtimer 即使未启动也会运行