线程--使用线程回调方法(示例下载)

来源:互联网 发布:android 网易新闻源码 编辑:程序博客网 时间:2024/05/21 11:01
 

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

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

原创粉丝点击