杀死一个线程

我正在处理的项目中有以下代码片段:

public void Start() { Thread t = new Thread(NotifyIfNecessary); Threads.Add(t); t.Start(); t.Abort()); } 

我想要的是线程’t’应该执行方法NotifyIfNecessary并且只在方法完成执行后才中止。 在我当前的代码中,t.Abort()被过早调用。

这是因为您正在创建一个新线程并启动它,然后通过调用Thread.Abort()方法立即从您刚刚创建它的线程中Thread.Abort()它。 你不需要这样做; 当NotifyIfNecessary完成执行时,您的线程将完成。 只需删除行t.Abort(); 并且您的代码应该正常工作。

您不应该首先调用abort,因为abort仅适用于失败的用户代码(在单独的appdomain中运行)。 在您的情况下,只需允许NotifyIfNecessary运行完成(即不要调用abort)。 完成。

但也许你真正想要做的是,在NotifyIfNecessary完成之前,你的主线程不会继续。 如果是这种情况,则调用线程“加入”。

您不需要调用Abort,因为当NotifyIfNecessary结束时线程将自动停止。

如果你想要NotifyIfNecessary完成不要中止线程。 如果您希望该函数仅在完成NotifyIfNecessary后继续使用join或不在另一个线程中调用该函数。

我不认为需要调用Abort() 。 一旦NotifyIsNeccessary完成,线程就会完成。 您是否希望在Start()结束时等待,直到线程完成?