sxl_88
sxl_88
2015-02-08 13:25
采纳率: 50%
浏览 1.7k
已采纳

c# winfrom项目,webbrower控件中加载页面过程中导致timer控件显示时间会停一小会

在C# Winfrom项目中,from窗体中,有一个webbrower控件用于加载网页,在webbrower控件内放了一个label控件(用于显示当前时间),还有一个timer控件(用于控制label显示时间,显示格式为:hh:mm:ss,).

目前遇到个问题,当webbrower控件用于加载数据量较大的网页时,在网页加载的过程中,会导致label控件显示时间中的秒时,
会停顿两至三秒后再恢复接着两至三秒之后的时间显示(两至三秒正好是网页也加载数据完成的过程)。
请问怎么样解决这个问题。timer控件能够让label控件能正常显示时间,不受webbrower控件加载网页的影响,不让时间停顿两至三秒。不管网页加载的数据量有多大,通过timer控件能够让label控件能正常显示时间。

请各位帮忙看看,有没有相关的解决办法。谢谢!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

7条回答 默认 最新

  • devmiao
    devmiao 2015-02-08 13:27
    已采纳

    用thread命名空间下的 timer,而不是winforms的timer,前者基于多线程,不会被阻塞。

    点赞 评论
  • sxl_88
    sxl_88 2015-02-08 13:35

    如果用winforms的timer可以解决阻塞问题吗

    点赞 评论
  • devmiao
    devmiao 2015-02-08 14:50

    不可以。因为在一个线程中。

    点赞 评论
  • sxl_88
    sxl_88 2015-02-08 22:42

    C# Winfrom项目中可以用thread命名空间下的 timer控件吗?

    点赞 评论
  • sxl_88
    sxl_88 2015-02-08 23:03

    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方法呢?
    
    点赞 评论
  • sxl_88
    sxl_88 2015-02-09 04:32

    刚才试了下,用thread命名空间下的 timer,还是有上述问题?

    点赞 评论
  • sxl_88
    sxl_88 2015-02-10 04:37

    虽然用thread命名空间下的 timer,在时间执行上不会被阻塞,但是label控件在显示上有延时,怎么解决下?

    点赞 评论

相关推荐