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);
    }
    }
    }
     
     
     
  • 相关阅读:
    论二级域名收集的各种姿势
    我喜欢你是寂静的-聂鲁达
    早晨充满-聂鲁达
    KALI Linux更新源
    lodash throttle和debounce
    lodash capitalize 首字母大写
    C# 格式化百分比
    c# PadLeft,PadRight用法
    对象名 XXX 无效。
    lambda 分组后的count
  • 原文地址:https://www.cnblogs.com/kcjm/p/15207270.html
Copyright © 2011-2022 走看看