首页 新闻 会员 周边

在while中调用Thread.Sleep()时,界面假死了。

0
悬赏园豆:10 [已解决问题] 解决于 2010-11-23 18:17

在while中调用Thread.Sleep(3000)时,也就是3秒左右时,界面假死了。这个能解决么?只要能控件一定时间后再进行下一次循环就行了。

while(IsXXX()==false)
{
Thread.Sleep(
3000);
}

 

问题补充: 效果相当于一个监听功能:当满足条件时IsXXX()返回true,否则返回false。前提:总会到达满足条件的时候,但是时间不确定。如果没有满足条件,则一直等待下去,不执行另外的语句,但是界面要能够响应操作,否则这个监听就无法控制了。 if (IsDoNext() == true) { //... } private bool IsDoNext() { while (IsOK() == false) { Thread.Sleep(3000); } } private bool IsOK() { if (满足条件) { return true; } else { return false; } }
烈火★寒冰的主页 烈火★寒冰 | 菜鸟二级 | 园豆:210
提问于:2010-11-02 14:22
< >
分享
最佳答案
0

采用多线程的方法 可解决。

收获园豆:10
农民工老李 | 菜鸟二级 |园豆:423 | 2010-11-03 10:13
多线程可以停留在等待状态么?
烈火★寒冰 | 园豆:210 (菜鸟二级) | 2010-11-05 10:13
@烈火★寒冰:可以。Thread.Sleep()
农民工老李 | 园豆:423 (菜鸟二级) | 2010-11-05 10:36
其他回答(3)
0

你想实现什么功能?

Ou lei | 园豆:619 (小虾三级) | 2010-11-02 14:32
0

while(IsXXX()==false)
{
    Thread.Sleep(
3000);
}

如果这段代码在主线程上执行,且IsXXX()始终为false,那么就会假死!

不知你要做啥效果,是否可用timer解决?

LoujaDy | 园豆:908 (小虾三级) | 2010-11-02 14:57
我要的效果相当于一个监听功能:当满足条件时IsXXX()返回true,否则返回false。前提:总会到达满足条件的时候,但是时间不确定。如果没有满足条件,则一直等待下去,不执行另外的语句,但是界面要能够响应操作,否则这个监听就无法控制了。
支持(0) 反对(0) 烈火★寒冰 | 园豆:210 (菜鸟二级) | 2010-11-05 10:04
0

啥时候IsXXX()==true呢?

这是死循环啊!

狗尾草. | 园豆:94 (初学一级) | 2010-11-02 16:01
IsXXX()是个方法调用,迟早会返回true的。
支持(0) 反对(0) 烈火★寒冰 | 园豆:210 (菜鸟二级) | 2010-11-05 09:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册