我在C#中的多线程有点困难。从其他线程停止线程
我只需激活线程:
getMultiVarEnabled = true; Globals.readThread = new Thread(readMultipleVarForTextBoxes); Globals.readThread.IsBackground = true; Globals.readThread.Start();
内螺纹:
Globals.PIC.recievingMultiple = true; while (getMultiVarEnabled) // dodaj timeout { ... } Globals.PIC.recievingMultiple = false; Globals.readThread.Abort();
,并停止从主线程的线程使用:
if (getMultiVarEnabled) { getMultiVarEnabled = false; while (Globals.PIC.recievingMultiple); Globals.readThread.Join(); Globals.readThread = null; }
的问题是,有时(并不总是)我的程序停止线:
while (Globals.PIC.recievingMultiple);
有谁知道什么是使该故障发生的?
最好的问候, 克里斯
有趣的代码格式,我喜欢它:) – ViRuSTriNiTy
Globals.PIC.recievingMultiple'声明为volatile吗?为什么要从它里面中止readThread?只需在'readMultipleVarForTextBoxes'中使用'return'即可。 – JeffRSon
关于代码的一些评论。在多线程代码共享中,状态是错误的主要来源。静力学不是你认为他们的朋友。你也不需要放弃自己_Inside thread:_'Globals.readThread.Abort();',理想情况下你不用任何地方的'Abort',只要停止执行代码即退出循环。 –