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