你的理解有问题,一个appdomain 出现错误 是没有影响到别的appdomain ,一个进程可以包含多个appdomain,所以一个程序集出错不影响别的程序集,但不表示不影响这个exe

解决方案 »

  1.   

    尝试每个应用程序域(AppDomain)使用新的线程打开..static void Run()
    {
        AppDomain domain = AppDomain.CreateDomain("newdomain");
        
        //domain.ExecuteAssemblyByName(Assembly.GetExecutingAssembly().FullName);
        
        //运行你的独立组件..
    }static void Main(string[] args)
    {
        new Thread(new ThreadStart(Run)).Start(); //启动新应用程序域..
    }
      

  2.   

    是的, 我现在的情况也是一个进程拥有多个AppDomain, 但如果其中一个AppDomain出错把进程搞崩溃了(如我的情况),那么进程拥有的AppDomain都跟着崩溃!
      

  3.   

    其实每个组件的执行代码都是多线程的(通讯组件),主要是长时间运行后,组件中总会有未捕获的异常出现。 
    这类异常就是原凶。 但AppDomain的UnhandledException 事件处理不了,它仍然throw给了用户.
      

  4.   

    ^ō^ 所以结合多线程技术处理是首选, 然而在每个应用程序域当中适当使用 try-catch-finally 可以有效防止进程崩溃..
      

  5.   

    http://www.codinghorror.com/blog/archives/000216.html
      

  6.   

    遇到不懂的地方,lz还是切换到英文版本的MSDN仔细研究吧。MSDN中文版很多内容乃是机器翻译的结果,不容易理解也是正常的。
      

  7.   

    因为调用多个程序集
    如果一个程序集合BK了则程序无法进行下去
    一定要建立
    try-catch-finally
    另 我推测非AppDomain的相关异常;
    主要是各程序集中某个代码块运行抛出异常后会影响整个程序集。
      

  8.   

    本来就是想写个应用程序框架,差价都是别人写的,可能会有未处理的异常导致程序崩溃。这个AppDomain如何处理啊。就像Google浏览器,任意一个窗口崩溃都不会导致应用程序崩溃。
      

  9.   

    chrom也会全部崩溃掉,遇到过多次