(四)线程--使用线程回调方法

来源:互联网 发布:编程单词简写 编辑:程序博客网 时间:2024/06/05 11:42
(一).描述 此示例演示使用线程回调方法 (二).代码 using System; using System.Threading; using System.Runtime.Remoting.Messaging; namespace 回调 { //委托声明(函数签名) delegate string MyMethodDelegate(); class MyClass { //调用的方法 public static string

(一).描述
   此示例演示使用线程回调方法
(二).代码
   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();
  }
 }
}

原创粉丝点击