博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
异步线程C#异步委托的使用
阅读量:6337 次
发布时间:2019-06-22

本文共 1452 字,大约阅读时间需要 4 分钟。

时间紧张,先记一笔,后续优化与完善。

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    using System.Threading;

    using System.Runtime.Remoting.Messaging;

    namespace 异步委托

    {

    /// <summary>

    

    /// 说明异步委托调用时会发生一个新的线程,不会阻塞主线程,

    /// 前提是应用回调函数,而不是直接应用委托的.endinvoke方法获取结果

    

    /// </summary>

    class Program

    {

        public delegate int AddDel(int x, int y);

        static void Main(string[] args)

        {

            //定义委托

            AddDel addDel = new AddDel(AddFunc);

            Console.WriteLine("主线程开始执行...{0}",Thread.CurrentThread.ManagedThreadId);

            //开始异步调用委托

            addDel.BeginInvoke(2, 3, Callback, 2);  //第三个参数回调函数,第四个参数,额定参数

    每日一道理
如果你们是蓝天,我愿做衬托的白云;如果你们是鲜花,我愿做陪伴的小草;如果你们是大树,我愿做点缀的绿叶……我真诚地希望我能成为你生活中一个欢乐的音符,为你的每一分钟带去祝福。

            Console.WriteLine("主线程执行完毕!");

            Console.ReadKey();

        }

        static int AddFunc(int x, int y)

        {

            Console.WriteLine("子线程在执行:{0}",Thread.CurrentThread.ManagedThreadId);

            Thread.Sleep(3000);

            return x + y;

        }

        static void Callback(IAsyncResult ar)

        {

            AsyncResult asy = (AsyncResult)ar;

            //获取代理信息

            AddDel addDel = (AddDel)asy.AsyncDelegate; 

            //获取返回结果

            int result = addDel.EndInvoke(ar);

            //获取额定参数

            int otherData = (int)asy.AsyncState;

            Console.WriteLine("子线程执行完毕!{0},执行结果:{1},额定参数:{2}",Thread.CurrentThread.ManagedThreadId

                                    ,result,otherData);

        }

    }

    }

文章结束给大家分享下程序员的一些笑话语录: 程序员打油诗   

  写字楼里写字间,写字间里程序员;
  程序人员写程序,又拿程序换酒钱。
  酒醒只在网上坐,酒醉还来网下眠;
  酒醉酒醒日复日,网上网下年复年。
  但愿老死电脑间,不愿鞠躬老板前;
  奔驰宝马贵者趣,公交自行程序员。
  别人笑我忒疯癫,我笑自己命太贱;
  不见满街漂亮妹,哪个归得程序员。

--------------------------------- 原创文章 By

异步和线程
---------------------------------

转载地址:http://svxoa.baihongyu.com/

你可能感兴趣的文章
1号店连添头都算不上,京东与沃尔玛,谁才是接盘侠
查看>>
隐藏数值为0的情况下的div
查看>>
ionic2-Toast
查看>>
laravel打印查询日志
查看>>
设计模式第十一课 中介者模式 Mediator Pattern
查看>>
centos安装
查看>>
docker容器的数据卷以及使用方式
查看>>
Node服务器创建HTTPS服务器——SSL证书
查看>>
最常用的四种大数据分析方法
查看>>
我的友情链接
查看>>
LNMP0.8安装ionCube和eAccelerator后显示“不支持”的解决方法
查看>>
JPDA 架构研究17 - JDI概览
查看>>
View 5.1 重装上阵(3—用户体验篇)
查看>>
MySQL误操作后如何快速恢复数据
查看>>
ELK初探
查看>>
刷题第三天,根本就没用过堆栈,刷题刷到了,看了一下,知道点了,这回用一用哈哈哈 ----- 20. Valid Parentheses...
查看>>
数据并行化
查看>>
QuartZ Cron表达式
查看>>
性能测试工具VTune的功能和用法介绍
查看>>
音频视频组件Audio DJ Studio for .NET更新至v10.0.0.0丨附下载
查看>>