首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C# 多线程操作ui解决方法

2014-04-19 
C# 多线程操作ui我在新起的线程里想改变webBrowser1 的url网上说只能通过this.Invoke((EventHandler)deleg

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。

热点排行