多线程下调用类的使用问题
在程序中使用子线程来运行负责 网络下载部分 子程调用类的主要运行的代码
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 事件不触发,需要怎么改呢?
------解决方案--------------------
我在你另一个帖子里面回复了。
因为你使用的Timer是名字空间System.Windows.Forms.Timer下的,他不支持多线程操作。
而System.Timers.Timer名字空间下的Timer才支持多线程操作。
把这个换了就OK。