如何在C#中终止一个线程?

我想试试用C#进行线程化,我知道一些关于C语言的线程。

所以我只是想问一下我是否要终止一个线程,我应该用smt.Abort()来做,否则它会在函数结束后“自杀”?

另外,C#中的C中是否有类似pthread_exit()东西?

对不起我的英语不好。 🙂

Thread.Abort将“杀死”该线程,但这大致相当于:

场景:您想要关闭计算机

解决方案:您将炸药绑在计算机上,点亮它并运行。

通过CancellationTokenSource.Cancel ,设置一些(安全访问)“正在运行”bool等,并调用Thread.Join ,触发“退出条件”更好。 这更像是:

场景:您想要关闭计算机

解决方案:单击“开始”,“关闭”,然后等待计算机关闭。

外部(从线程外部)终止线程是一个坏主意; 当你异步杀死它时,你永远不知道线程在做什么。 在C#中,如果您的线程函数返回,则线程结束。

这篇MSDN文章如何:创建和终止线程(C#编程指南)有一些注释和一些示例代码,您可能会发现它们很有帮助。

一旦函数结束,您不需要手动终止线程。

如果您生成一个线程来运行一个方法,一旦该方法返回,该线程将自动关闭,因为它没有任何进一步执行。*

当然,您可以通过简单地调用Abort()手动中止线程,但由于线程处于当前执行状态的位置不可靠,因此潜在的线程状态损坏,这几乎是不推荐的。 如果您需要自己处理线程的查杀,最好使用CancellationToken 。 您还可以阅读MSDN上的取消受管线程文章。

**也就是说,除非你使用ThreadPool来完成你的工作。 您不必担心在不同的排队任务中重用它们时会中止这些线程。

 Thread.Abort() Thread.Join(); Thread = null;