委托这两天多少看懂点了,但是容易脑子发晕,总结下
委托就是声明一个对象 让他帮助其他程序进行执行。如下进行了一个跨线程显示的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 }
时间: 2024-10-11 07:06:04