c# 同步委托,异步委托,异步回调

来源:互联网 发布:linux c 串口编程实例 编辑:程序博客网 时间:2024/06/06 07:34
namespace WindowsFormsApplication1{    public partial class Form1 : Form    {        delegate int adddelegate(int a, int b);        public Form1()        {            InitializeComponent();        }        private  int add(int a, int b)        {            int c = 0;            c = a + b;            Thread.Sleep(5000);            return c;        }        private void button1_Click(object sender, EventArgs e)        {            adddelegate addfuc = new adddelegate(add);            int result = addfuc.Invoke(int.Parse(textBox1.Text), int.Parse(textBox2.Text));            textBox3.Text = result.ToString();        }        private void Form1_Load(object sender, EventArgs e)        {            textBox1.Text = "2";            textBox2.Text = "1";        }        private void button2_Click(object sender, EventArgs e)        {            adddelegate addfuc = new adddelegate(add);            IAsyncResult result = addfuc.BeginInvoke(int.Parse(textBox1.Text), int.Parse(textBox2.Text), null, null);            int c = 0;            c=addfuc.EndInvoke(result);            textBox3.Text = c.ToString();        }        private void button3_Click(object sender, EventArgs e)        {            adddelegate addfuc = new adddelegate(add);            IAsyncResult result = addfuc.BeginInvoke(int.Parse(textBox1.Text), int.Parse(textBox2.Text), new AsyncCallback(callback), "2");        }        void callback(IAsyncResult ar)        {            AsyncResult asy = (AsyncResult)ar;            adddelegate addde = (adddelegate)asy.AsyncDelegate;            int result = addde.EndInvoke(ar);            MessageBox.Show(result.ToString());        }     }}

参考文章:

http://www.2cto.com/kf/201305/215911.html

http://www.csharpwin.com/csharpspace/12393r3151.shtml

0 0