当前位置: 首页 > news >正文

C# 异步调用代理类


异步调用代理类
AsyncInvokeProxy.cs


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;


namespace AsyncInvokeDemo
{
    public class AsyncInvokeProxy<T1>
    {
        private Action<T1> _task;


        public AsyncInvokeProxy(Action<T1> task)
        {
            this._task = task;
        }


        public void BeginEnvoke<T2>(T1 args, Action<T2, Exception> cb, T2 cbArgs)
        {
            this._task.BeginInvoke(args, new AsyncCallback((r) =>
            {
                try
                {
                    cb(cbArgs, null);
                    this._task.EndInvoke(r);
                }
                catch (Exception ex)
                {
                    cb(cbArgs, ex);
                }


            }), cbArgs);
        }
    }
}




使用:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace AsyncInvokeDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            Action<A> test = (a) =>
            {
                Console.WriteLine("start to invoke");
                for (int i = 0; i < 1000; i++)
                {
                    Console.WriteLine(i);
                }


                Console.WriteLine("invoke args aint : {0},astr: {1} ", a.aInt, a.aStr);
            };


            AsyncInvokeProxy<A> proxy = new AsyncInvokeProxy<A>(test);


            proxy.BeginEnvoke<B>(new A { aInt = 1, aStr = "astr" }, (b, ex) =>
            {
                if (ex != null)
                {


                }


                Console.WriteLine("callback ret bint: {0},bstr: {1}", b.bInt, b.bStr);


            }, new B { bInt = 2, bStr = "bstr" });


            Console.ReadLine();
        }
    }


}


相关文章:

  • C#事件和委托的基础知识模型
  • 异步发送HTTP请求
  • Flex开发流程设计器的经验之谈(2)
  • html5 涂鸦板
  • [IE编程] IE中使网页元素进入编辑模式
  • linux命令练习 笔记
  • [IE技巧] IE 中打开Office文件的设置
  • 配置系统未能初始化 错误的解决方案
  • [IE编程] IE中对网页进行截图的编程接口
  • c# 反射 遍历实体的所有字段,ObjectDumper类实现
  • Flex开发流程设计器的经验之谈(3)
  • 飞信分布式存储的结构
  • 使用Zoundry进行测试了下!
  • 使用HTML5制作游戏
  • [Web开发] IE 所有版本打包下载,网页兼容测试必备
  • 【前端学习】-粗谈选择器
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • CSS盒模型深入
  • express如何解决request entity too large问题
  • JavaScript-Array类型
  • Leetcode 27 Remove Element
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • Python3爬取英雄联盟英雄皮肤大图
  • rc-form之最单纯情况
  • React-Native - 收藏集 - 掘金
  • Ruby 2.x 源代码分析:扩展 概述
  • spring boot 整合mybatis 无法输出sql的问题
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • 初探 Vue 生命周期和钩子函数
  • 从输入URL到页面加载发生了什么
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 如何选择开源的机器学习框架?
  • 移动端 h5开发相关内容总结(三)
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • ​你们这样子,耽误我的工作进度怎么办?
  • ###项目技术发展史
  • (007)XHTML文档之标题——h1~h6
  • (3)llvm ir转换过程
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (笔试题)分解质因式
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (一)Linux+Windows下安装ffmpeg
  • **python多态
  • .bashrc在哪里,alias妙用
  • .net 8 发布了,试下微软最近强推的MAUI
  • .NET Remoting学习笔记(三)信道
  • .net(C#)中String.Format如何使用
  • .Net6 Api Swagger配置
  • .NET企业级应用架构设计系列之结尾篇
  • // an array of int
  • @Conditional注解详解