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

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

  • 相关阅读:
    进制
    enum
    文件操作fstream
    文件读取 FILE
    static_cast、dynamic_cast、reinterpret_cast、和const_c
    std::max 错误
    boost 时间
    c++ new 和delete
    c++ static静态
    BOOST 之filesystem, path
  • 原文地址:https://www.cnblogs.com/paulcode/p/10076182.html
Copyright © 2011-2022 走看看