首页 新闻 会员 周边

最近在做个winform项目,真心对委托,事件不太懂,下面这句代码让我纠结请翻译下大体意思

0
悬赏园豆:5 [已解决问题] 解决于 2012-09-05 14:17

Thread t = new Thread(delegate()
{

if (this.IsHandleCreated)
{
EventHandler eh = new EventHandler(AfterLoadGroup);
Invoke(eh);
}
});
t.IsBackground = true;
t.Start();

十四的主页 十四 | 初学一级 | 园豆:46
提问于:2012-09-05 11:06
< >
分享
最佳答案
0

创建线程对象,在Thread类的构造方法中需要参数,参数是一个委托对象,你这传了一个匿名方法,然后设置为后台线程,启动线程。

收获园豆:3
轻狂の书生 | 小虾三级 |园豆:1042 | 2012-09-05 13:58

多谢

十四 | 园豆:46 (初学一级) | 2012-09-05 14:16
其他回答(2)
0

不复杂啊,声明一个线程,线程体就是先判断this.IsHandleCreated,再执行一个具体的函数AfterLoadGroup,

然后启动,这不懂的话,要多学习了。

xczre56htd34yg | 园豆:204 (菜鸟二级) | 2012-09-05 12:24

你说的这个执行过程我懂这个意思我懂。委托EventHandler 函数Invoke 可能是这两个的不知道为什么这么写

支持(0) 反对(0) 十四 | 园豆:46 (初学一级) | 2012-09-05 13:25
0

Threand 参数需要有个委托ThreadStart,定义public delegate void ThreadStart()
委托使用了匿名函数,可以参考 
 // Original delegate syntax required
        // initialization with a named method.
        TestDelegate testdelA = new TestDelegate(M);

        // C# 2.0: A delegate can be initialized with
        // inline code, called an "anonymous method." This
        // method takes a string as an input parameter.
        TestDelegate testDelB = delegate(string s) { Console.WriteLine(s); };

于是这里就在Thread的参数里直接使用delegate() 定义了个匿名方法。

下面的Invoke操作就没什么说的了,一般是用在后台业务模块触发前台事件时,通过Invoke方法更新界面。

 

收获园豆:2
赵保龙 | 园豆:249 (菜鸟二级) | 2012-09-05 13:31

多谢指导

支持(0) 反对(0) 十四 | 园豆:46 (初学一级) | 2012-09-05 14:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册