异步调用与线程(总结篇)
2010-09-30 21:07:06 来源:WEB开发网委托调用、子线程程调用、与线程池调用
1,委托调用
(1),同步委托:委托的Invoke方法用来进行同步调用。同步调用也可以叫阻塞调用,它将阻塞当前线程,然后执行调用,调用完毕后再继续向下进行。
从下面的例子中可以看到,同步委托的执行是在主线程main中执行的,所以当执行委托时,当前工作会处于等待状态,开始执行委托,当委托执行完后在继续执行“当前工作”
public delegate int AddHandler(int i,int y);
private void button1_Click(object sender, EventArgs e)
{
//添加当前主线程名称“main”
Thread.CurrentThread.Name = "main";
AddHandler handler = new AddHandler(Add);
Debug.WriteLine(handler.Invoke(1,2));
Debug.WriteLine("OK");
}
int Add(int x,int y)
{
//输出当前执行操作的现场
Debug.WriteLine(Thread.CurrentThread.Name);
return x + y;
}
输出结果:main
OK
从Debug.WriteLine(Thread.CurrentThread.Name) 看出同步委托代码执行所在的线程与调用方式相关,同步委托代码执行所在的线程等于调用委托所在的线程.
(2),异步委托:异步调用不阻塞主线程,而是把调用在线程池中的新线程中执行,我们可以不必关心,也无需关心这个“新线程”是怎么定义的
更多精彩
赞助商链接