WEB开发网
开发学院软件开发C语言 异步调用与线程(总结篇) 阅读

异步调用与线程(总结篇)

 2010-09-30 21:07:06 来源:WEB开发网   
核心提示:委托调用、子线程程调用、与线程池调用1,委托调用(1),异步调用与线程(总结篇),同步委托:委托的Invoke方法用来进行同步调用,同步调用也可以叫阻塞调用,同步委托代码执行所在的线程等于调用委托所在的线程.(2),异步委托:异步调用不阻塞主线程,而是把调用在线程池中的新线程中执行,它将阻塞当前线程,然后执行调用

委托调用、子线程程调用、与线程池调用

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),异步委托:异步调用不阻塞主线程,而是把调用在线程池中的新线程中执行,我们可以不必关心,也无需关心这个“新线程”是怎么定义的

1 2 3 4 5 6  下一页

Tags:异步 调用 线程

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接