我正在创建一个简单的程序来控制两个电机,出于安全原因,还控制一个光幕。在程序中,用户将点击“运行”,并且(在新线程上)如果没有任何东西进入光幕,电机将移动到各个位置。如果确实有东西进入光幕,则会引发一个事件,该事件必须立即停止所有运动(即停止另一个线程)。
在这种情况下我应该使用什么线程类型?我对 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/