您的位置:首页 > 编程语言 > C#

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

2014-05-04 17:58 741 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  委托 c# 异步委托