C# 多线程操作ui
我在新起的线程里想改变webBrowser1 的url
网上说只能通过this.Invoke((EventHandler)delegate{
//这里webBrowser1 .Navigate("http://.....");
});
可是我的程序一直进不去this.Invoke((EventHandler)delegate{
//这里的程序一直进不来
});
求大神解决
------解决方案--------------------啥意思,估计你还是没用对,google资料检查一下
------解决方案--------------------webbrowser的操作本身就是异步的,不用再起新线程
------解决方案--------------------Form_Load里面
Thread newThread = new Thread(()=>{
this.Invoke((senderObject,eventArgs)=>{
webBrowser1 .Navigate("http://.....");
},null,null);
});
newThread.Start();
解释下:
Thread newThread = new Thread(()=>{
//这里()=>{}是ThreadStart委托实例,即用lambda写的匿名方法
});
()=>{}里面的
this.Invoke((senderObject,eventArgs)=>{
webBrowser1 .Navigate("http://.....");
},null,null);
就是newThread.Invoke(指定委托类型的实例,param object[]参数);
而Invoke第一个参数指定的指定委托类型的实例是EventHandler,所以(senderObject,eventArgs)=>{
webBrowser1 .Navigate("http://.....");
}
后面的参数null,null就是senderObject,eventArgs。