(转载)C# 异步委托的使用

当进行耗时的工作时,可以使用异步委托执行。

 

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Remoting.Messaging;

namespace ConsoleApplication2
{
    
class Program
    {
        
static void Main(string[] args)
        {
            facHandler f 
= new facHandler(Fac);
            
//开异步方法开始执行
            IAsyncResult result = f.BeginInvoke(10new AsyncCallback(callBack), "计算结束");
            Console.WriteLine(
"做其他事情先……");
            Console.Read();
        }


        
delegate int facHandler(int n);
        
static int Fac(int n)
        {
            
if (n == 1return 1;
            System.Threading.Thread.Sleep(
100);
            
return Fac(n - 1* n;
        }

        
static void callBack(IAsyncResult result)
        {
            
//result是Fac()的返回值
            
//将AsyncDelegate强制转换为用户定义的委托。
            facHandler handler = (facHandler)((AsyncResult)result).AsyncDelegate;
            Console.WriteLine(
"结果:" + handler.EndInvoke(result));

            Console.WriteLine(result.AsyncState);
        }

    }
}

 

posted on 2011-08-09 11:48  罗里罗嗦夫斯基  阅读(208)  评论(0编辑  收藏  举报