0

我有一个相当简单的 C# 程序(没有 UI,只有命令行),它使用 3rd 方库(Abbyy 的 Finereader 8.1)做一些工作然后退出。

很简单,而且效果很好。然而,最近我们开始从程序中收到以下错误:

应用程序错误:“0x2c0de46b”处的指令引用了“0x0732aa84”处的内存。

一点点挖掘表明这发生在 C# 代码的末尾。基本上最后两行是:

  Console.WriteLine(message);
  return statusCode;

最终的控制台消息已写入,程序的输出也很好。事实上,如果不是因为这个错误使程序无法完全终止,我可以解决它。

我们正在运行两个脚本,分别在两台机器上调用这个程序。这是随机发生的(据我所知),但通常每天至少有一个(4 个脚本)会发生这种情况。我认为并发运行可能会发生某种奇怪的情况,但测试消除了这种情况。

任何关于可能原因的想法都会受到欢迎,因为我已经没有想法了。

此外,如果有人知道在这种情况发生时终止程序的方法,那将很有用。

4

2 回答 2

1

“应用程序错误:“0x2c0de46b”处的指令引用了“0x0732aa84”处的内存。”

此错误意味着代码中某处的内存损坏,如果没有完整的代码,我不能说更多。在这种错误情况下,引发异常的位置并不重要。试着看看你的代码,尤其是调用库的代码。

于 2009-12-16T13:51:29.967 回答
1

嗯...故障排除要求我询问发生了什么变化,但我认为您自己考虑过这一点。您使用的是哪个版本的 .NET 框架?这个问题发生在什么操作系统上?

我相信这个异常来自 3rd 方库所做的一些清理工作。你联系过他们的支持吗?您可以尝试显式卸载库并查看错误是否仍然出现?

或者...您是否尝试为未处理的异常添加处理程序?也许值得尝试一下...

public static void Main()   
{   
    AppDomain.CurrentDomain.UnhandledException +=   
        new UnhandledExceptionEventHandler(   
            OnUnhandledException);

    //some code here....
}   

/// <summary>
/// Occurs when you have an unhandled exception
/// </summary>
public static void OnUnhandledException(object sender, UnhandledExceptionEventArgs e)   
{ 
    //here's how you get the exception  
    Exception exception = (Exception)e.ExceptionObject;  

    //bail out in a tidy way and perform your logging
}

DoctaJonez的示例代码)

只是把一些东西扔在那里,因为似乎还没有一个明确的答案。

于 2009-12-29T12:42:50.410 回答