将异常从一个线程传递回主线程

时间:2015-04-07 04:03:23

标签: c# .net multithreading exception

我有两个线程,线程A和线程B.线程A启动线程B,线程B继续运行,直到线程A告诉它停止。

但是,如果线程B抛出异常,我希望能够将Exception对象传递回线程A并重新抛出它,以便线程A可以处理它。

我的问题有三个:

  1. 这是在多线程情况下处理异常的正确方法吗?

  2. 如果是这样,有没有标准化的方法呢?

  3. 更广泛地说,是否可以从线程B调用在线程A上执行的方法,这是如何完成的?

  4. 如果您正在创建Windows窗体,这似乎很简单,因为窗体控件具有BeginInvoke()方法。同样,WPF具有Dispatcher对象。这两个都将在创建表单控件/调度程序的线程上调用方法。所以我可以创建一个如下所示的方法:

    private void ThrowException(Exception ex)
    {
         throw ex;
    }
    

    通过表单控件或调度程序调用它。但是在这种情况下,我正在制作一个控制台应用程序,所以我没有表单控件,如果我添加了对WindowsBase.dll的引用,我只能使用调度程序,这看起来并不像如果您没有创建WPF应用程序,那将是正确的做法。

    我尝试使用委托,但是BeginInvoke方法创建了一个新线程来执行该方法。我想在线程A上执行该方法。

0 个答案:

没有答案