尝试读取或写入受保护的内存。这通常表明其他内存已损坏

时间:2010-09-30 00:17:28

标签: .net

我有一个客户端连接到socket的应用程序。该应用程序是多线程的,执行大量的数字运算,并消耗大量的内存。 (1.5 - 2 GB)有时它会在一个看似简单的代码区域中抛出此错误。

尝试读取或写入受保护的内存。这通常表明其他内存已损坏。

它并不总是在同一行,但它始终在同一个文件中,在foreach循环中。我想知道VS 2008中的一些设置是否会导致它?没有什么奇怪的事情真的只是在一个foreach循环中迭代迭代List。我很确定它不是一个线程问题,因为我使用的是lock()所以我100%确定Lists会同时被多个线程修改。我已经尝试关闭编译器优化,但它仍然每隔一段时间就会执行一次。非常烦人。

这是非常罕见的事件。我在调试中运行服务器,这只发生在每12-48小时一次。

1 个答案:

答案 0 :(得分:2)

“没有什么奇怪的事情真的只是在一个foreach循环中迭代迭代列表”。 - 这听起来像是一个线程同步问题。 (事实上​​,我可以99%保证它!)

如果你在迭代它时有其他线程试图修改它,你可能需要获取列表的副本。

建议你发布一些代码。