今天写不完,明天会接着写的,,,,
学习C#有一段时间了,不过C#的委托+回调才这两天才会用,以前只是知道怎么用.前面的一篇文章,函数指针,其实是为这个做铺垫的,说白了委托就相当于C语言中的函数指针,具体说用委托有什么好处,我也不知道,但是因为你只要学C#那么回调就一定要会,回调是委托的一种.回调多用于线程间....还是用代码一点点的说明吧!现在认为自己以前不会用委托是因为手太懒,再者没有太多的必须用C#做的Demo,自己学东西都是用到什么学什么,想做什么东西需要什么知识就学什么,前几天有了必须要做的C#的Demo,关于检测TCP通信发过来的数据的.扯了这么多...回调主要的应用是---如果你在一个线程里操作像文本框,按钮,Label等组件时,会报错...原因--C#它不让这样操作,,,,
看例子
窗体里面就放一个textbox
先这样写
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using System.Windows.Forms; namespace @delegate { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { textBox1.Text = "123456"; } } }
结果
就这一句 textBox1.Text = "123456";往文本框中写入123456 程序运行没问题
现在加入线程
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using System.Windows.Forms; namespace @delegate { public partial class Form1 : Form { Thread writeThread; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { writeThread = new Thread(write_Metod); writeThread.Start(); } private void write_Metod() { textBox1.Text = "123456"; } } }
然后启动
蹦了
一起动就退出
说早了.......先说委托
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using System.Windows.Forms; namespace @delegate { public partial class Form1 : Form { public