【ChengKing(ZhengJian)】

【ChengKing(ZhengJian)】

博客园 首页 联系 订阅 管理

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

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

(三).示例下载
  https://files.cnblogs.com/ChengKing/ThreadExample.rar

posted on 2006-01-15 22:32  【ZhengJian】  阅读(303)  评论(0)    收藏  举报