zoukankan      html  css  js  c++  java
  • c# 异步调用 利用委托异步调用

    1:调异步调用无回调函数
    using System;
    using Microsoft.VisualStudio.TestTools.UnitTesting;
    using System.Threading;
     
    namespace UnitTestProject1
    {
    [TestClass]
    public class UnitTest1
    {
    [TestMethod]
    public void TestMethod1()
    {
    new AsynchronousTest().Test();
    }
    }
     
    public class AsynchronousTest
    {
    ///
    /// 第一步:创建委托
    ///
    ///
    ///
    ///
    public delegate int deletest(int a, int b);
    ///
    /// 第二步:创建方法
    ///
    ///
    ///
    ///
    public int Add(int a, int b)
    {
    Thread.Sleep(500);
    return a + b;
    }
    ///
    /// 第三步:调用
    ///
    public void Test()
    {
    var d = new deletest(Add);
    IAsyncResult res = d.BeginInvoke(1, 2, null, null);
    }
    }
    }
    2:异步调用有回调函数
    using System;
    using Microsoft.VisualStudio.TestTools.UnitTesting;
    using System.Threading;
     
    namespace UnitTestProject1
    {
    [TestClass]
    public class UnitTest1
    {
    [TestMethod]
    public void TestMethod1()
    {
    new AsynchronousTest().Test();
    }
    }
     
    public class AsynchronousTest
    {
    ///
    /// 第一步:创建委托
    ///
    ///
    ///
    ///
    public delegate int deletest(int a, int b);
    ///
    /// 第二步:创建方法
    ///
    ///
    ///
    ///
    public int Add(int a, int b)
    {
    Thread.Sleep(500);
    return a + b;
    }
    ///
    /// 回调函数
    /// 说明:只能是无返回值
    /// 参数只能是IAsyncResult
    ///
    public void CallbackF(IAsyncResult result)
    {
    //AsyncDelegate 属性可以强制转换为用户定义的委托的实际类。
    deletest test = (deletest)((System.Runtime.Remoting.Messaging.AsyncResult)result).AsyncDelegate;
    var d = test.EndInvoke(result); //被调用方法返回值 Add()的返回值
     
    //需要处理的事情
    //................
    }
    ///
    /// 第三步:调用
    ///
    public void Test()
    {
    var d = new deletest(Add);
    //new AsyncCallback(CallbackF) 回调函数
    IAsyncResult res = d.BeginInvoke(1, 2, new AsyncCallback(CallbackF), null);
    }
    }
    }
     
     
     
  • 相关阅读:
    sun.misc.BASE64Encoder找不到jar包的解决方法
    mybatis中的#和$的区别
    mysql , oracle 从记录中查询出 楼盘下只有 no 公司的 楼盘
    Windows+Git+TortoiseGit+COPSSH 安装 教程
    oracle job 定时执行 存储过程
    如何在PL/SQL中修改ORACLE的字段顺序
    oracle创建数据库连接dblink
    oracle数据库去掉重复记录;只保留一条数据
    Oracle中like查询下划线等特殊字符的处理
    START WITH CONNECT BY PRIOR子句实现递归查询
  • 原文地址:https://www.cnblogs.com/kcjm/p/15207270.html
Copyright © 2011-2022 走看看