C#Threads.Abort()

Bet*_*moo 6 c# multithreading abort

如果一个线程正在运行一个func1调用其中的另一个函数的函数func2......

然后我调用了thread.Abort()

func1只会停止
OR func1并且func2所有函数func1都调用了??

谢谢

编辑:这里有更多细节:

func1在一个新的线程中被调用,它会不断地func2定期调用...
func2只有当某个数组不为null时才开始做一些工作..它完成它并返回

当主管想要保存数据时,它会中止Thread of func1- 然后使数组为null,保存数据,然后用新的数据填充数组..然后func1再次启动Thread ..

有时会引发异常,因为数组在null中为空func2.所以func1 abort不会影响func2

Mar*_*ers 14

Thread.Abort 不保证会停止线程,如果可能,您应该避免使用它.

调用此方法通常会终止该线程.

强调我的.

它的作用是ThreadAbortException在目标线程中引发一个.如果捕获此异常,代码将继续执行,直到它到达catch块的末尾,此时异常将自动重新抛出.如果你没有捕获它,它类似于正常的异常 - 它向上传播调用堆栈.

假设您没有捕获异常,那么该线程中运行的所有代码都将停止运行.从该线程启动的其他线程不会受到影响.

  • 顺便说一句,使用`Thread.Abort()`作为控制线程执行生命周期的手段通常是个坏主意.应始终努力编写线程代码以对关闭条件敏感并优雅地终止而无需调用`Abort`. (4认同)