Example #1
0
        static void Main(string[] args)
        {
            CustomerManager customerManager = new CustomerManager();
            Mydelegate      myDelegate      = customerManager.SendMessage;

            myDelegate += customerManager.ShowAlert;

            Mydelegate2 mydelegate2 = customerManager.SendMessage;


            //ard arda çalışmasını istediğin metotlar grubu için delegate'leri kullanabilirsiniz.Örneğin bir yemek
            //yapmak için sırasıyla yapılan işlemleri bir metot olarak tanımlayıp hepsini delegate değişkenine atarsak
            //sadece delegate metotunu çağırmamız yeterli olacaktır.
            DortIslem dortIslem = new DortIslem();


            Mydelegate3 mydelegate3 = dortIslem.Carp;

            mydelegate3 += dortIslem.Topla;

            myDelegate();
            mydelegate2("Selamunaleyküm");
            mydelegate3(2, 4);

            Console.Read();
        }
Example #2
0
        static void MyCallBack(IAsyncResult ar)  //ar是意思是判断是否执行完毕
        {
            //回调函数先把 IAsyncResult转化为 AsyncResult类型 ,方便后面调用
            AsyncResult result = ar as AsyncResult;

            //获取当前 被调用的委托 m3
            Mydelegate3 currentDelegate = result.AsyncDelegate as Mydelegate3;

            //获取异步委托m3 获取的返回值
            int sum = currentDelegate.EndInvoke(ar);

            Console.WriteLine("总和是{0}", sum);
        }
Example #3
0
        static void Main(string[] args)
        {
            //#region 调用 无参数,无返回值的委托
            ////实例化一个委托
            //MyDelegate1 m1 = new MyDelegate1(T1);
            //IAsyncResult result= m1.BeginInvoke(null,null);///直接调用异步委托

            ////等待异步委托调用结束后,再继续后面的代码。
            ////这里使用EndInvoke()
            //m1.EndInvoke(result);
            //Console.WriteLine("OK");

            //Console.ReadKey();
            //#endregion


            //#region 调用有参数、无返回值的委托
            //MyDelegate2 m2 = new MyDelegate2(T2);
            //IAsyncResult result= m2.BeginInvoke(1, 2,null,null);  //开始异步委托调用
            ////执行异步委托结束后,才执行后面的代码
            //m2.EndInvoke(result);    //线程阻塞,等待异步委托的调用的结束

            //Console.WriteLine("ok");
            //Console.ReadKey();

            //#endregion

            #region   参数,有返回值 的委托, 所以需要回调函数
            //实例化这个 委托
            Mydelegate3 m3 = new Mydelegate3(T3);

            //开始异步调用委托
            IAsyncResult result = m3.BeginInvoke(1, 5, new AsyncCallback(MyCallBack), null);

            // AsyncCallback 是一个有参数无返回值的委托
            //所以定义的 Mycallback方法 也需要是 有参数 无返回值。
            //方法 又需要 和委托的 参数类型一致,所以方法 的参数也需要   MyCallBack类型


            Console.WriteLine("异步委托调用开始了");
            Console.ReadKey();

            #endregion
        }
Example #4
0
 public static Mydelegat1 Method(Mydelegate2 mydelegate2, Mydelegate3 mydelegate3)
 {
     return(delegate { return mydelegate2.Invoke() + mydelegate3.Invoke(); });
 }