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

时间:2012-02-15 17:00:59

标签: c# multithreading

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

在这种情况下我应该使用哪种线程类型?我对System.Threading.Thread模糊不清,并使用ThreadPool进行小型数值计算任务。

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

谢谢!

修改

我正在使用.NET 2.0。

1 个答案:

答案 0 :(得分:4)

Thread.Abort()不仅对你的代码来说不是最安全的东西,它看起来也不像是保证关闭引擎的方法。除非线程代码在某种循环中一直按下死人开关。换句话说,

  

安全地停止硬件(即线程)

他们似乎并不是一回事。

您的电机线程应该合作,即连续轮询取消标记。这适用于所有解决方案(Thread,TPL)。