如何使用中止按钮关闭多个线程?

时间:2017-07-26 14:49:03

标签: c# excel vb.net multithreading thread-safety

我知道已经提出并回答了类似的问题,但我没有经验或知识将我在其他主题中阅读的内容应用于我目前的情况。

我一直在用c#开发一个软件程序,我的编程背景很少(我是一名机械工程师)。基本上,我的程序所做的是告诉注射器移动并推动液体通过流量计来测试它们是否顺利运行,然后我将数据导出到excel中。我一次最多有五个注射器,每个注射器都在自己的线程上操作,因为每个流量计都需要自己的COM端口。我的程序需要有一个中止按钮,可以杀死并阻止其中的所有内容。

我不关心我收集的数据是否被丢弃,因为我的excel文件在线程关闭时不会自行保存。

我已经读过使用Thread.Abort是不明智的,我尝试的其他任何东西似乎都没有。我尝试在我的代码中使用标记,但它们似乎对我来说不正常。

我的代码看起来像这样:

//within my "Run" button

if (cb1.Checked)
{
    Thread thread91 = new Thread(() => workThreadFunction91(coll[4], wb, xla, 
    timeRun, abort));
    thread91.IsBackground = true;
    thread91.Start();
}
//I then have that repeated four more times (one for each syringe)


private void workThreadFunction( ... )
{
testSyringes(...)
}

private void testSyringes( ... )
{
//code to send commands to syringes

while (time < timeRun)
 //code to communicate with syringes this is where my code runs for roughly 
a minute, and where I would need be able to abort should something go wrong. 
I call several other methods in here which send data to the flow meters, 
receive data from the flow meter, and export that data to excel.
}

private void abort()
abort = true; //(bool for a flag)

//code to reset syringes to initial position

这基本上是我当前状态下代码的粗略轮廓。任何帮助将不胜感激,如果这个问题在任何方面看起来多余,我会道歉。

0 个答案:

没有答案