• (二)线程通过委托异步调用方法


     

    (一).描述
      先运行个简单的线程示例,认识一下线程
      通过委托调用方法,以及使用AsyncResult判断线程的状态

    (二).代码
    using System;
    using System.Threading;
    using System.Runtime.Remoting.Messaging;

    namespace 通过委托异步调用方法

     
    //委托声明(函数签名)
     delegate string MyMethodDelegate();

     
    class MyClass
     
    {
      
    //要调用的动态方法
      public string MyMethod1()
      
    {
       
    return "Hello Word1";
      }


      
    //要调用的静态方法
      public static string MyMethod2()
      
    {
       
    return "Hello Word2";
      }

     }

     
    class Class1
     
    {
      
    /// <summary>
      
    /// 应用程序的主入口点。
      
    /// </summary>

      [STAThread]
      
    static void Main(string[] args)
      
    {
                MyClass myClass 
    = new MyClass();
       
       
    //方式1:  声明委托,调用MyMethod1
       MyMethodDelegate d = new MyMethodDelegate(myClass.MyMethod1);
       
    string strEnd = d();   
       Console.WriteLine(strEnd);

       
    //方式2:  声明委托,调用MyMethod2 (使用AsyncResult对象调用)
       d = new MyMethodDelegate(MyClass.MyMethod2); //定义一个委托可以供多个方法使用      
       AsyncResult myResult;   //此类封闭异步委托异步调用的结果,通过AsyncResult得到结果.
       myResult = (AsyncResult)d.BeginInvoke(null,null);        //开始调用
       while(!myResult.IsCompleted)  //判断线程是否执行完成
       {
        Console.WriteLine(
    "正在异步执行MyMethod2 ..");
       }

       Console.WriteLine(
    "方法MyMethod2执行完成!");
       strEnd 
    = d.EndInvoke(myResult);      //等待委托调用的方法完成,并返回结果  
       Console.WriteLine(strEnd);
       Console.Read();
      }

     }

    }

  • 相关阅读:
    Invalid bound statement (not found): com.**.demo.mapper.User_infoMapper
    IDEA 常用快捷键
    springboot 将项目打包成jar包
    .netcore A circular dependency was detected for the service of type '****'.
    C# 枚举 高级战术
    C#高性能动态获取对象属性值
    使用github actions检测网站是否在线
    纸壳CMS分布式部署集群解决方案
    System.Data.DataRow[] 如何转换为 DataTable
    JavaDoc生成文档
  • 原文地址:https://www.cnblogs.com/engine1984/p/862970.html
Copyright © 2020-2023  润新知