在C# Winfrom项目中,from窗体中,有一个webbrower控件用于加载网页,在webbrower控件内放了一个label控件(用于显示当前时间),还有一个timer控件(用于控制label显示时间,显示格式为:hh:mm:ss,).
目前遇到个问题,当webbrower控件用于加载数据量较大的网页时,在网页加载的过程中,会导致label控件显示时间中的秒时,
会停顿两至三秒后再恢复接着两至三秒之后的时间显示(两至三秒正好是网页也加载数据完成的过程)。
请问怎么样解决这个问题。timer控件能够让label控件能正常显示时间,不受webbrower控件加载网页的影响,不让时间停顿两至三秒。不管网页加载的数据量有多大,通过timer控件能够让label控件能正常显示时间。
请各位帮忙看看,有没有相关的解决办法。谢谢!
用thread命名空间下的 timer,而不是winforms的timer,前者基于多线程,不会被阻塞。
如果用winforms的timer可以解决阻塞问题吗
不可以。因为在一个线程中。
C# Winfrom项目中可以用thread命名空间下的 timer控件吗?
System.Threading.Timer timer;//定义为成员变量
private void Form1_Load(object sender, EventArgs e)
{
timer = new System.Threading.Timer(
MyTimerCallback, //定时回调函数
null,
Timeout.Infinite,
1000);
}
void MyTimerCallback(object o)
{
// (要定时执行的代码写在这里)
timer.Change(Timeout.Infinite, 1000); //<--每1秒启动一次!
}
怎么实现不了每1秒定时调用MyTimerCallback方法呢?
刚才试了下,用thread命名空间下的 timer,还是有上述问题?
虽然用thread命名空间下的 timer,在时间执行上不会被阻塞,但是label控件在显示上有延时,怎么解决下?