zoukankan      html  css  js  c++  java
  • 实现异步编程

    在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;//获取结果
            }

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

  • 相关阅读:
    C#与C++中struct和class的小结
    C#中string的小结
    树的一些操作——遍历,前序和中序建立后续
    一个快速、高效的Levenshtein算法实现——代码实现
    整数拆分
    阶乘结果中0的个数
    普莱菲尔密码矩阵生成算法
    CTF密码学总结
    盲文对照表
    实验吧-古典密码
  • 原文地址:https://www.cnblogs.com/paulcode/p/10076182.html
Copyright © 2011-2022 走看看