我正在创建一个简单的程序来控制两个电机,出于安全考虑,我们需要一个光幕。在程序中,用户将点击“运行”并且(在新线程上)如果没有任何物体进入光幕,则电机将移动到各种位置。如果有东西进入光幕,则会发出一个事件,必须立即停止所有动作(即停止另一个动作)。
在这种情况下我应该使用哪种线程类型?我对System.Threading.Thread
模糊不清,并使用ThreadPool
进行小型数值计算任务。
另外,如果光幕坏了,安全停止硬件(即线程)的适当方法是什么?我听说Abort()
方法不是可行的方法。
谢谢!
修改
我正在使用.NET 2.0。
答案 0 :(得分:4)
Thread.Abort()
不仅对你的代码来说不是最安全的东西,它看起来也不像是保证关闭引擎的方法。除非线程代码在某种循环中一直按下死人开关。换句话说,
他们似乎并不是一回事。安全地停止硬件(即线程)
您的电机线程应该合作,即连续轮询取消标记。这适用于所有解决方案(Thread,TPL)。