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

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

 2010-09-30 21:07:06 来源:WEB开发网   
核心提示: 委托的异步调用通过BeginInvoke和EndInvoke来实现,从下面的例子中可以看到,异步调用与线程(总结篇)(2),异步委托的执行是在新线程中执行,所以当执行委托时,使得我们没有办法直接控制委托的停止和执行,假设 Add是一个0-100循环,当前工作会不会阻塞,异步委托 与当前线程是同时

委托的异步调用通过BeginInvoke和EndInvoke来实现。

从下面的例子中可以看到,异步委托的执行是在新线程中执行,所以当执行委托时,当前工作会不会阻塞,异步委托 与当前线程是同时执行的。       

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.BeginInvoke(1, 2, null, null));
            Debug.WriteLine("OK");
        }
        int Add(int x,int y)
        {
           //输出当前执行操作的现场
            Debug.WriteLine(Thread.CurrentThread.Name);
           return x + y;
        }

输出结果:OK

空 

Debug.WriteLine(Thread.CurrentThread.Name) 输出为空,看出异步委托代码执行是在我们没有指定名字的新线程中执行的。

备注:由于异步委托时启用线程池线程执行,.Net没有赋予程序员直接停止其调用的方法,使得我们没有办法直接控制委托的停止和执行,假设 Add是一个0-100循环,一般情况下我们是没有办法在委托循环到50让委托停下来的,二般情况是可以通过一些特殊的手段的需要的话就Goolge一下吧!所以显得委托调用不够灵活

上一页  1 2 3 4 5 6  下一页

Tags:异步 调用 线程

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