实现异步编程
在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;//获取结果 }
这几种方式各自有自己的优缺点,以至于我们在使用的时候要根据自己的具体场景选择合适的工具.