首页 > 代码库 > c#委托教程干货

c#委托教程干货

委托这两天多少看懂点了,但是容易脑子发晕,总结下

委托就是声明一个对象 让他帮助其他程序进行执行。如下进行了一个跨线程显示的richbox。

 

 1         //声明 命名委托  无返回值
 2         delegate void MsgHandler(string txt);
 3         //MsgHandler msgdele, msgdels, msglambda;
 4 
 5         private void Form1_Load(object sender, EventArgs e)
 6         {
 7             //将方法放到线程中
 8             Thread trd = new Thread(new ThreadStart(Start));
 9             trd.Start();
10         }
11 
12         void Start()
13         {
14             //命名方法实例化
15             MsgHandler msgdele = new MsgHandler(MsgShow);
16             
17             //使用命名方法
18             //msgdele("命名方法");             //线程内调用
19             rbox.Invoke(msgdele,"命名方法");   //线程外调用
20 
21             //匿名方法  委托类型  委托变量 = delegate (【参数列表】){代码块};
22             MsgHandler msgdels = delegate(string txt)
23             {
24                 MsgShow(txt);
25             };
26             
27             
28             //线程内调用
29             //msgdels("匿名方法");
30             
31             //线程外调用
32             rbox.Invoke(msgdele, "匿名方法");
33             
34             
35             //lambda 声明方法
36             MsgHandler msglambda = p => { MsgShow(p); };
37             //msglambda("lambda");
38 
39             //线程外调用
40             rbox.Invoke(msglambda, "lambda");
41         }
42 
43 
44         //执行方法
45         private void MsgShow(string txt)
46         {
47             //和正常使用一样
48             rbox.AppendText(txt + "\r\n");
49         }

 

c#委托教程干货