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);
    }
    }
    }
     
     
     
  • 相关阅读:
    [leetcode]259. 3Sum Smaller 三数之和小于目标值
    题型总结之K Sum
    [Leetcode]167. Two Sum II
    题型总结之Sliding Window
    [Leetcode]703. Kth Largest Element in a Stream 数据流中的第 K 大元素
    [Leetcode]307. Range Sum Query
    pycharm同一目录下无法import明明已经存在的.py文件
    python高级特性:迭代器与生成器
    self的含义,为什么类调用方法时需要传参数?
    git三:远程仓库GitHub
  • 原文地址:https://www.cnblogs.com/kcjm/p/15207270.html
Copyright © 2011-2022 走看看