首页 > 编程 > C# > 正文

线程之使用线程回调方法

2023-05-11 12:02:28
字体:
来源:转载
供稿:网友

此示例演示使用线程回调方法

using System;
using System.Threading;
using System.Runtime.Remoting.Messaging;

namespace 回调

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

 class MyClass
 {
  //调用的方法
  public static string MyMethod()
  {   
   //Console.WriteLine(System.Threading.Thread.CurrentThread.IsBackground);
   for(int i = 0;i < 3; i++)  //延长时间(模拟实际任务)
   {
    Thread.Sleep(1000);
   }
   return "Hello Word";
  }
  
  //声明委托,调用MyMethod
  private static MyMethodDelegate d = new MyMethodDelegate(MyClass.MyMethod);
  
  //声明委托,调用AsyncCallbackMethod
  private static System.AsyncCallback a = new System.AsyncCallback(MyClass.AsyncCallbackMethod);  
  
  [STAThread]
  static void Main(string[] args)
  {
   d.BeginInvoke(a,null); 
   Console.ReadLine();   //这句不能去掉,否则主线程执行完成后,子线会会强迫调用Abort()方法销毁掉,也就执行不到回调方法了
  }  
  
  public static void AsyncCallbackMethod(System.IAsyncResult myIAsyncResult)
  {
   string strEnd = d.EndInvoke(myIAsyncResult);      //委托调用的方法已经完成,输出其值  
   Console.WriteLine(strEnd);
   Console.Read();
  }
 }
}

本示例代码已经测试,能够正常运行!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表