有两个线程,其中一个线程出现异常时,另一个线程来捕获,怎么实现???不要用以下类似代码,要用.net框架下的封装好的(据说已经实现,可不知道如何做)
        List<jexception.JException> l = new List<jexception.JException>();
        Thread t;
        private object obj = new object();
        public Form1()
        {
            InitializeComponent();
            t = new Thread(ts);
            t.Start();
            try
            {
                throw new jexception.JException("ksks");
            }
            catch (jexception.JException e)
            {
                Add(e);
            }
            try
            {
                throw new jexception.JException("aaa");
            }
            catch (jexception.JException ex)
            {
                Add(ex);
            }
        }        private void Add(jexception.JException e)
        {
            lock (obj)
            {
                l.Add(e);
            }
        }        private void ts()
        {
            while (true)
            {
                if (l.Count > 0) 
                {
                    MessageBox.Show(l[0].Message);
                    l.RemoveAt(0);
                }
            }
        }        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (!t.Equals(null)) t.Abort();
        }

解决方案 »

  1.   

    统一在AppDomain.CurrentDomain.UnhandledException里处理吧。
      

  2.   

    .net自带的 throw exception 是利用你当前线程自身 进行工作. .net没有提供一种你现在设想的机制: 发生异常的时候丢入一个系统默认的线程 或者丢进主线程 等等.系统类库只会提供一些确有必要的公共方法和支持类,接口. 而不会提供你这样通用性,实用性,必要性都不强的东西.所以,本身就只存在你贴出的代码一种方式来解决你这个需求:就是把异常对象丢入另外一个你定义的线程.