使用约束执行区来处理StackOverflowExceptions

时间:2010-11-06 14:07:59

标签: .net reliability stack-overflow .net-3.5 .net-4.0

阅读了this article(及其他)关于.NET可靠性功能的内容后,我认为以下代码应该处理StackOverflowExceptions:

class Program
{
    private static int s_exitCode = -1;

    static int Main(string[] args)
    {
        RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(DoStuff, Cleanup, null);
        return s_exitCode;
    }

    [MethodImpl(MethodImplOptions.NoInlining)]
    static void DoStuff(object userdata)
    {
        DoStuff(userdata);
    }

    [MethodImpl(MethodImplOptions.NoInlining)]
    [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
    static void Cleanup(object userData, bool exceptionThrown)
    {
        s_exitCode = 0;
    }
}

我已在控制台应用程序中选择了上述代码,并在应用程序的配置文件中包含以下条目:

<runtime>
  <legacyUnhandledExceptionPolicy enabled="1" />
</runtime>

我通过另一个应用程序的Process.Start()调用启动它。但是,尽管如此,进程崩溃,返回退出代码-2147023895。尽管进行了大量的研究和修补,但我并没有找到如何使其发挥作用。

感谢任何建议,谢谢。

克里斯。

0 个答案:

没有答案