异步调用委托的3种方法

异步调用委托的3种方法

using  System;
using  System.Collections.Generic;
using  System.Text;

namespace  AsyncDelegate
{
    
class Program
    
{

        
delegate int IntIntDelegate(int x);//生明一个委托

        
int Square(int x)
        
{
            
return x * x;
        }


         
void AsyncDelegateExample()
        
{
            
            IntIntDelegate f 
= Square;

            
//方法一
            IAsyncResult ar1=f.BeginInvoke(10,null,null);
            
while (!ar1.IsCompleted)//循环直到异步完成
                Console.WriteLine(f.EndInvoke(ar1));
            
//do some work
            
             
            
//方法二
            IAsyncResult ar2= f.BeginInvoke(20nullnull);
            
//do some work
            ar2.AsyncWaitHandle.WaitOne();//等待直到异步完成
            Console.WriteLine(f.EndInvoke(ar2));

            
//方法三  完成后调用回调函数,取得结束通知的结果
            IAsyncResult ar3 = f.BeginInvoke(30, AsyncDelegateCallback, f);

        
        }


        
void AsyncDelegateCallback(IAsyncResult ar)//回调函数
        {
            IntIntDelegate f 
= (IntIntDelegate)ar.AsyncState;
            
if (ar.IsCompleted)
            
{
                Console.WriteLine(f.EndInvoke(ar));
            }


            
//Console.WriteLine(f.EndInvoke(ar));
            
        }


        
static void Main(string[] args)
        
{
            Program test 
= new Program();
            test.AsyncDelegateExample();
//客户端调用
        }

    }

}


输出: 100
          400
          900

转载于:https://www.cnblogs.com/xiaobaigang/archive/2007/10/19/931016.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值