我有一个Winform,需要等待大约3-4个小时。我无法关闭并以某种方式重新打开该应用程序,因为它在后台执行某些操作,而它正在等待。Thread.Sleep()睡得更久
为了实现等待 - 不会对UI线程和其他原因造成麻烦 - ,我有一个BackgroundWorker,我可以发送多少毫秒来等待并在其doWork事件中调用Thread.Sleep(waitTime);
。在backGroundWorker_RunWorkerCompleted
事件中,我会在等待后执行程序应该执行的操作。
这在开发机器上正常工作。即当等待结束时等待结束。但是在测试机器上,它会一直等待更长的时间。它发生两次,第一次等待超过特定时间1小时,第二次等待大约2小时40分钟。
难道这有什么明显的原因发生,或者我错过了什么?
的开发机是Win XP的试机是赢7
为什么不使用Timer控件而不是后台工作器中的thread.sleep? –
同意..计时器应该这样做 –
为什么计时器的准确度比睡眠更好? AFAIK,定时器间隔由线程必须等待的Windows消息队列上的定时等待实现,因此与sleep()相同。使用定时器会让调用线程必须运行消息队列 - 通常这是不可取的。尝试在没有使用sleep()的情况下等待一个通信栈内一小时的深度 - 需要痛苦且容易出错的状态机。 –