在程序中使用子线程来运行负责 网络下载部分 子程调用类的主要运行的代码     class WebBrowserClass
    {
        WebBrowser myWebPage = new WebBrowser();//
        Timer Monitor = new Timer();
        public void StartWebBrowser(string Url) 
        {
            myWebPage.ScrollBarsEnabled = true;
            myWebPage.ScriptErrorsSuppressed = false;
            myWebPage.Navigate(Url);
            Monitor.Interval = 3000;
            Monitor.Tick += new EventHandler(Monitor_Tick);
            Monitor.Start();
        }        private void Monitor_Tick(object sender, EventArgs e)
        {
            if (myWebPage.IsBusy == false && myWebPage.StatusText == "完成")
            {
                BookInfor.StaticClass.WebPageHtml = myWebPage.Document.Body.OuterHtml;
                BookInfor.StaticClass.flag = true;
                Monitor.Stop();
            }
        }        
    }
子线程调用的代码
                WebBrowserClass WBC = new WebBrowserClass();
                WBC.StartWebBrowser(Url);主要想实现子线程调用类的 StartWebBrowser(string Url) 方法,使用控件WebBrowser.Navigate(Url)方法加载网页,再用触发器每间隔3秒判断WebBrowser控件中的页面是否加载完成。问题是调用后我的 Monitor_Tick 事件不触发,需要怎么改呢?

解决方案 »

  1.   

    http://blog.csdn.net/xianfajushi/article/details/7609849
      

  2.   

    我在你另一个帖子里面回复了。
    因为你使用的Timer是名字空间System.Windows.Forms.Timer下的,他不支持多线程操作。
    而System.Timers.Timer名字空间下的Timer才支持多线程操作。
    把这个换了就OK。
      

  3.   

    3楼的说的对,查了下资料才知道Timer有3种,我的这个确实只能在窗体里面使用...