C# 异常是否会结束线程,尽管它是try/catch?

C# 异常是否会结束线程,尽管它是try/catch?,c#,multithreading,C#,Multithreading,我有两个问题: 如果我有这样的方法: public void DoMyWork() { throw new MyException(anyString); } public void DoMyWorkAsync() { try { new Thread(DoMyWork).Start(); } catch (MyException) { // Do anything } } …我将其称为async,如下所示: public

我有两个问题:

如果我有这样的方法:

public void DoMyWork()
{
   throw new MyException(anyString);
}
public void DoMyWorkAsync()
{
   try
   {
      new Thread(DoMyWork).Start();
   }

   catch (MyException)
   {
      // Do anything
   }
}
…我将其称为
async
,如下所示:

public void DoMyWork()
{
   throw new MyException(anyString);
}
public void DoMyWorkAsync()
{
   try
   {
      new Thread(DoMyWork).Start();
   }

   catch (MyException)
   {
      // Do anything
   }
}
首先,是否会使用这样的try块捕获异常?如果是这样的话,线程会结束吗?因为通常情况下线程会停止,但如果我捕获到它,它也会结束吗?或者我必须实现一个
取消令牌吗?

1)不,它不会。线程中的异常必须在线程中处理。主线程不控制线程的执行流,因此不会捕获异常

2) 申请将终止。详情如下:

首先,是否会使用类似try的块捕获异常 这个

不,不会被抓住的

您需要使用
try/catch
将代码包装在
DoMyWork
方法中以捕获该异常


注意:这将导致“未处理的异常”,任何未处理的异常都会导致进程中断(应用程序崩溃)。

问题是,它不会捕获异常,可能会,我会哑:D,所以我想在这里问一下。好的,谢谢。所以,我不能就这样继续,在它周围放一个try/catch,因为这个方法也应该正常使用,而且它应该是免费的,你将如何处理异常,这就是问题所在。唯一的方法是在预期的位置捕获异常,如果你不这样做,你将受到“应用程序崩溃”的惩罚。好的,可能还有其他选择吗?喜欢任务吗?我能和他们合作到什么程度?@交易是的,任务是更好的选择。如果抛出未处理的异常(在.NET4.5中),它不会使进程崩溃。您可以阅读更多关于它的信息,谢谢!我也发现了这个。是否可以使处理程序可重写,以便用户可以实现自己的方式来处理exeption?这会是一个解决方案吗?嗯,好吧,我不能只是继续,并把它放在一个try/catch周围,因为该方法也应该像正常的一样使用,它应该是免费的,您将如何处理异常,这就是问题所在。