高手再帮我看看吧,多线程问题
光说好像不太清楚,请高手帮我看一下代码,如果真的时Join的问题,我得马上想办法去更改先前的程序了。
//用多线程进行通讯测试
private void Test()
{
//这里省略无关的代码
//用多线程进行通讯测试
for (int index = 0; index < m_SeiPcbas.Count; index++)
{
m_SeiPcbas[index].SetTestCondition(cmbCommand.Text, m_RepeatTimes, m_RepeatInterval,
new CallBackDelegate(CallBackRecord));//这里使用了回调委托来回调数据
Thread threadTest = new Thread(new ThreadStart(m_SeiPcbas[index].TestReadCommand));
m_TestThreads.Add(threadTest);
}
}
private void CallBackRecord(SeiPcbaTestRecord record)
{
rtfCurrentDetails.Invoke(
new EventHandler(
delegate
{
m_NumFinished++;
//这里省略无关代码
if (m_NumFinished == m_NumToTest)//测试都完成了
{
tmrTest.Interval = m_TestInterval;
tmrTest.Enabled = true;
tmrTest.Start();问题在这里:测试完了启动时钟,在时钟中又调用了上面的Test()方法,当时我认为既然数据已经得到了回调数据,那么4个测试线程已经执行结束,所有没有在其他地方使用Join方法等待线程执行结束,不知道是不是就是这个原因导致第一次死机的,请高手给个答案 }
}
));
}
------解决方案--------------------帮顶!Too
------解决方案--------------------2个贴?
顶
------解决方案--------------------多线程回调对我来说还是有点复杂的,刚学习c#不久,帮你顶了
------解决方案--------------------
没有结束吧? 在其他地方开始,test函数里边唤醒,完了之后就阻塞,看怎么样?
------解决方案--------------------帮你顶顶吧
------解决方案--------------------
你是使用线程池?
线程池中可以添加相同的线程吗?感觉你代码有问题检查一下吧,代码不全不好说。