C# 我的应用程序被以下错误关闭:试图读取或写入受保护的内存

C# 我的应用程序被以下错误关闭:试图读取或写入受保护的内存,c#,winforms,C#,Winforms,我已经开发了一个应用程序(使用VS2010 C#)。 一段时间后(1小时或3小时或任何时间),我的应用程序因此异常而关闭: 尝试读取或写入受保护内存。这通常表示其他内存已损坏。 我不知道我的代码的哪一部分导致了这个异常。我该怎么办 请注意,我正在应用程序中使用System.Data.SQLite dll和来自另一个软件的dll(ocx文件),此应用程序的5个版本同时运行 我的应用程序中有一个com对象。它发生在它的一个事件的末尾。 此com对象有一个名为Received_Message的事件,在

我已经开发了一个应用程序(使用VS2010 C#)。 一段时间后(1小时或3小时或任何时间),我的应用程序因此异常而关闭: 尝试读取或写入受保护内存。这通常表示其他内存已损坏。 我不知道我的代码的哪一部分导致了这个异常。我该怎么办

请注意,我正在应用程序中使用System.Data.SQLite dll和来自另一个软件的dll(ocx文件),此应用程序的5个版本同时运行

我的应用程序中有一个com对象。它发生在它的一个事件的末尾。 此com对象有一个名为Received_Message的事件,在该事件完全执行后,我收到了此错误

 void a_Received(object sender, ReceivedEvent e)
{
    //when processing finished successfully and it reachs to the close        bracket , this exception fired.
}

那么问题出在哪里呢?

您是否可能将应用程序构建为x86,并且应用程序使用的内存量正在稳步增加?如果是这样的话,那么您很可能正在使用32位应用程序的2GB内存

您能捕获异常吗?不,它只是关闭应用程序。是否有任何方法可以理解我的代码的哪一部分导致此异常(任何软件或任何其他跟踪它的方法)。当应用程序刚刚打开时(有时在执行期间),它会在一段时间后关闭。AccessViolationException通常由非托管代码引起。这里有一个非常明显的候选者,使用电话从这个COM组件的所有者或作者那里获得支持。如果没有人拿起,那就停止使用。最大使用量约为30KB。我的服务器中有4GB ram。你是说我的应用程序在使用ram方面有某种限制?那么如何增加它?如果你的应用程序只使用30KB左右的ram,那么这不太可能是你面临的问题。从你的日志中,很难判断它可能是什么。我所能做的就是根据日志进行猜测。我建议你像@Hans Passant建议的那样给组件的作者打个电话
 void a_Received(object sender, ReceivedEvent e)
{
    //when processing finished successfully and it reachs to the close        bracket , this exception fired.
}