c# - 使用哪种线程类型,正确停止/中止?

标签 c# multithreading

我正在创建一个简单的程序来控制两个电机,出于安全原因,还控制一个光幕。在程序中,用户将点击“运行”,并且(在新线程上)如果没有任何东西进入光幕,电机将移动到各个位置。如果确实有东西进入光幕,则会引发一个事件,该事件必须立即停止所有运动(即停止另一个线程)。

在这种情况下我应该使用什么线程类型?我对 System.Threading.Thread 有点熟悉,并且使用过 ThreadPool 来执行小型数值计算任务。

此外,如果光幕损坏,安全停止硬件(即线程)的适当方法是什么?我听说 Abort() 方法不是正确的方法。

谢谢!

编辑

我正在使用 .NET 2.0。

最佳答案

不仅 Thread.Abort() 对您的代码来说不是最安全的,而且它看起来也不像是保证引擎关闭的方法。除非线程代码处于某种循环中,一直按下紧急开关。换句话说,

to safely stop the hardware (i.e. the thread)

它们看起来不是同一件事。

你的电机线程应该合作,即不断轮询取消标志。这适用于所有解决方案(线程、TPL)。

关于c# - 使用哪种线程类型,正确停止/中止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9297737/

相关文章:

c# - 如何在 Splitcontainer panel2 c# 中显示级联窗口

c# - 使用 C# 从 Xamarin 中的 http 网站下载图像

c++ - 错误左值需要作为一元 '&' 操作数

c++ - 在 QT4 中使用自定义事件

javascript - Chart.js 使用 foreach mvc 生成图表

c# - WPF自验证控件

c# - 为什么.NET中_MethodInfo接口(interface)不叫IMethodInfo?

monad 中的多线程

c - pthread.h 线程是否仅在一个核心中运行

java - Java中高效的多线程数组构建