zoukankan      html  css  js  c++  java
  • 异步调用委托的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
  • 相关阅读:
    计算欧拉函数值
    矩阵快速幂
    约瑟夫环数学公式
    整型输出输入优化
    计算机设计第三章
    计算机设计第二章
    计算机设计
    阿里巴巴秋招2017客户端附加题
    程序设计基本概念
    c++面试题
  • 原文地址:https://www.cnblogs.com/xiaobaigang/p/931016.html
Copyright © 2011-2022 走看看