如何在C#中终止一个线程?
我想试试用C#进行线程化,我知道一些关于C语言的线程。
所以我只是想问一下我是否要终止一个线程,我应该用smt.Abort()
来做,否则它会在函数结束后“自杀”?
另外,C#中的C中是否有类似pthread_exit()
东西?
对不起我的英语不好。 ?
Thread.Abort
将“杀死”该线程,但这大致相当于:
场景:您想要关闭计算机
解决方案:您将炸药绑在计算机上,点亮它并运行。
通过CancellationTokenSource.Cancel
,设置一些(安全访问)“正在运行”bool等,并调用Thread.Join
,触发“退出条件”更好。 这更像是:
场景:您想要关闭计算机
解决方案:单击“开始”,“关闭”,然后等待计算机关闭。
外部(从线程外部)终止线程是一个坏主意; 当你异步杀死它时,你永远不知道线程在做什么。 在C#中,如果您的线程函数返回,则线程结束。
这篇MSDN文章如何:创建和终止线程(C#编程指南)有一些注释和一些示例代码,您可能会发现它们很有帮助。
一旦函数结束,您不需要手动终止线程。
如果您生成一个线程来运行一个方法,一旦该方法返回,该线程将自动关闭,因为它没有任何进一步执行。*
当然,您可以通过简单地调用Abort()
手动中止线程,但由于线程处于当前执行状态的位置不可靠,因此潜在的线程状态损坏,这几乎是不推荐的。 如果您需要自己处理线程的查杀,最好使用CancellationToken 。 您还可以阅读MSDN上的取消受管线程文章。
**也就是说,除非你使用ThreadPool来完成你的工作。 您不必担心在不同的排队任务中重用它们时会中止这些线程。
上述就是C#学习教程:如何在C#中终止一个线程?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
Thread.Abort() Thread.Join(); Thread = null;
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/958497.html