代码中的thread.sleep()是让那个线程等待,如果只是让包含该语句的当前线程等待,那么为什么我的一个线程用thread.sleep()另一个线程也在等待?
while (FrmMain.setposIsOk == true)
{
if ( ComMod.isHaveOk == true)
{
this.Close();
}
else
{
Thread.Sleep(5);
}
}
就像这段代码,当线程“FrmMain.setposIsOk == true”完成后等待“ComMod.isHaveOk == true”线程完成,可为什么会进入死循环。就是说if ( ComMod.isHaveOk == true)一直不成立。
while (FrmMain.setposIsOk == true)
{
if ( ComMod.isHaveOk == true)
{
this.Close();
}
else
{
Thread.Sleep(5);
}
}
就像这段代码,当线程“FrmMain.setposIsOk == true”完成后等待“ComMod.isHaveOk == true”线程完成,可为什么会进入死循环。就是说if ( ComMod.isHaveOk == true)一直不成立。
解决方案 »
- 在做指纹识别软件开发时,我要怎么判断数据库里的两笔资料是不是同一个手指录入的???
- 如何在textBox_order_KeyDown中按下回车的时候触发 botton_click()事件
- list删除元素后,会影响元素的引用吗?--理论问题
- C#正则高手帮忙啊
- 关于使用Socket开发C/S程序
- listView控件选中状态
- 怎么使DropDownList控件显示原来已选中的数据,在进行数据显示时,如何使DropDownlist显示该值
- 二维 三维数组存入数据库?
- 一个很菜的问题:按钮无法加入到窗体?
- 热烈欢迎用过treeview的朋友进来看看
- 多应用程序使用同一个配置文件
- 关于利用反射给combobox控件赋值的问题
AutoResetEvent resetEvent = new AutoResetEvent();private void CloseWindow()
{
resetEvent.WaitOne();
this.Close();
}private delegate void CloseWindowCallBack();private void YourThreadStartEvent()
{
while (FrmMain.setposIsOk == true)
{
if ( ComMod.isHaveOk == true)
{
FrmMain.setposIsOk = false;
CloseWindowCallBack closeWindow = new CloseWindowCallBack(CloseWindow);
this.Invoke(closeWindow);
}
else
{
Thread.Sleep(5);
}
}
resetEvent.Set();
}