实现异步编程

在C#实现异步编程有两种方式:

一种是异步委托,一种是通过线程实现。

那么下面具体如何实现。直接给出例子:

static void Main(string[] args)
        {
            //异步编程
            //实现异步的两种方式:1.异步委托 2.新开线程
           
            //1.异步委托示例
            Func<int, int, int> func = (a, b) =>{return a + b;}; //首先申明委托
            IAsyncResult ar =  func.BeginInvoke(1, 2, null, null);//执行委托
            var res = func.EndInvoke(ar);//获取结果
            
            //2.新开线程示例
           
            //2.1 新开线程示例-Thread
            Thread thread = new Thread(new ParameterizedThreadStart((obj)=> {
                func(1, 1);
            }));
            thread.IsBackground = true;//设置为后台任务
            thread.Start();//启动线程
            //thread.Join();//阻止调用线程,直到该线程执行完毕
            //thread.Abort();//终止线程
           
            //2.2 新开线程示例-ThreadPool(直接将任务排入线程池队列)
            ThreadPool.QueueUserWorkItem(new WaitCallback((state) => { func(1, 1); }));

            //2.3 新开线程示例-Task(可设优先级)
            var task = new Task<int>(() => { return func(1, 1); });//创建任务
            task.Start();//启动任务
            var result = task.Result;//获取结果
        }

这几种方式各自有自己的优缺点,以至于我们在使用的时候要根据自己的具体场景选择合适的工具.

posted on 2018-12-06 13:14  潇潇@暮雨  阅读(186)  评论(0编辑  收藏  举报

导航