本帖最后由 scm_2008 于 2013-12-10 10:40:57 编辑

解决方案 »

  1.   

    .net 40 中,c# 默认情况下只处理SEH的异常。不处理CSE的异常。若你要捕获这类的异常。
    你需要再对应的方法上面加上
    [HandleProcessCorruptedStateExceptions]
    [SecurityCritical]
    void HandleCPPException()
    {
        try{
           //do some native exception
           }
        catch(system.accessvioliationexception) //捕获cse类型的异常
          {}
    }
      

  2.   

    zealot112345 谢谢。
    我用的是.NET2.0,所以HandleProcessCorruptedStateExceptions是用不上的。
    继续等回复
      

  3.   

    基本都是 try ---cache呀
      

  4.   

    .net 3.5 以前的版本,可以在配置文件中添加<configuration>
    <runtime>
    <legacyCorruptedStateExceptionsPolicy enabled="true"/>
    </runtime>
    </confguration>
    你可以试试。 
      

  5.   

    多找找dll的问题吧。有些异常会造成程序异常退出,无法捕获的。别说C#就C++也做不到。
      

  6.   

    实在不行的话,就把调用部分单独出来,封装成EXE,
    它独立运行的话至少不会连累主程序。
      

  7.   

    Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
    Application.Run(new MainFrame());
    static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
    {  }