Exemple #1
0
        private void btnDetener_Click(object sender, EventArgs e)
        {
            try
            {
                for (int i = 0; i < 101; i++)
                {
                    dlgt d1 = new dlgt(contadorDonaChocolate);
                    Invoke(d1, new object[] { i });
                    Thread.Sleep(5000);
                }

                for (int i = 0; i < 101; i++)
                {
                    dlgt d2 = new dlgt(contadorDonaVainilla);
                    Invoke(d2, new object[] { i });
                    Thread.Sleep(3000);
                }

                for (int i = 0; i < 101; i++)
                {
                    dlgt d3 = new dlgt(contadorDonaCanela);
                    Invoke(d3, new object[] { i });
                    Thread.Sleep(10000);
                }
            }
            catch (ThreadAbortException)
            {
                Thread.ResetAbort();
            }
        }
Exemple #2
0
 public void producirDonaCanela()
 {
     for (int i = 0; i < 101; i++)
     {
         dlgt d3 = new dlgt(contadorDonaCanela);
         Invoke(d3, new object[] { i });
         Thread.Sleep(10000);
     }
 }
Exemple #3
0
 public void producirDonaVainilla()
 {
     for (int i = 0; i < 101; i++)
     {
         dlgt d2 = new dlgt(contadorDonaVainilla);
         Invoke(d2, new object[] { i });
         Thread.Sleep(3000);
     }
 }
Exemple #4
0
 //Metodos
 public void producirDonaChocolate()
 {
     for (int i = 0; i < 101; i++)
     {
         dlgt d1 = new dlgt(contadorDonaChocolate);
         Invoke(d1, new object[] { i });
         Thread.Sleep(5000);
     }
 }
Exemple #5
0
        private void btnNotify_Click(object sender, EventArgs e)
        {
            MessageBox.Show("林杰樑:毒醃製品傷肝!!", "衛生署疾病管制局");

            dlgt virusNotify = btnKaoHsiung_Click;

            virusNotify = virusNotify + btnTaichung_Click;
            virusNotify = virusNotify + btnTaipei_Click;
            virusNotify.Invoke(sender, e);
        }
Exemple #6
0
        private static void MyDelegetAndEvent()
        {
            // -https://www.intertech.com/Blog/c-sharp-tutorial-understanding-c-events/
            Adder a = new Adder();
            dlgt  d = new dlgt(a.Add);

            //a.OnMyEvent += new Adder.dgEventRaiser(myEevntHandler);
            a.OnMyEvent += myEevntHandler;

            Console.WriteLine("x: " + d(5, 5));
        }
        static public void SetAct( dlgt.ActObj act, dlgt.ActObj act2 )
        {
            foreach ( COMMANDID_ACT_UNIT Unit in lst )
            {
                if (Unit.Act == act)
                {
                    Unit.Act += act2;
                    break;
                }
            }

            return ;
        }
Exemple #8
0
        void Main()
        {
            dlgt d;

            d = new dlgt(AA); //인수로 메서드 전달
            d(12);            //12의 제곱 = 144
            d = new dlgt(AAA);
            d(12);            //12의 세제곱 = 1728

            // 공변성 : 메서드의 리턴타입이 델리게이트의 리턴타입보다 더 자식 타입일 떄 이 메서드를 델리게이트가 가리킬 수 있는 성질.
            // 메서드의 매개변수가 더 부모여야 하며 반환되는 형이 더 부모여야 공변성 허용.
            dlgtBase db;

            db = GetBase;
            db = GetDerived;

            // 내장형 타입은 부모 자식관계가 성립하지 않으므로 정확하게 일치해야 한다.
            dlgtLong dl;

            dl = GetLong;
            dlgtInt di;

            di = GetInt;

            dlgtOperator dot;
            int          a = 3, b = 5;

            dot = new dlgtOperator(Add);
            Console.WriteLine("더하기 {0} + {1} = {2}", a, b, dot(a, b));
            dot = new dlgtOperator(Mul);
            Console.WriteLine("곱하기 {0} + {1} = {2}", a, b, dot(a, b));

            if (Compress(10, Progress) == true)
            {
                Console.WriteLine("모든 파일을 압축하였습니다.");
            }
            else
            {
                Console.WriteLine("취소되었습니다.");
            }

            Book[] books = new Book[10];
            for (int i = 0; i < books.Length; i++)
            {
                books[i] = new Book(i);
            }

            // 반환형이 void 인 델리게이트의 멀티케스트를 위해 null로 초기화한 후, += 연산자를 이용해 멀티캐스트 가능.
            dlgtRent rentCall = null;

            rentCall += books[1].Rend;
            rentCall += books[4].Rend;
            rentCall += books[6].Rend;
            rentCall += books[9].Rend;

            rentCall("운명");//1{4, 6, 9)번 고객이 운명을 빌려간다.

            Printer  prt = new Printer();
            Receiver rcv = new Receiver();

            rcv.Complete += prt.Print;
            rcv.Receive();

            Button btnStart = new Button();

            btnStart.Draw();
            btnStart.Click += GameStart;
            Console.WriteLine("S: 게임시작, E: 게임종료");

            for (;;)
            {
                if (Console.KeyAvailable)
                {
                    ConsoleKeyInfo input;
                    input = Console.ReadKey();
                    if (input.Key == ConsoleKey.S)
                    {
                        btnStart.OnClick();
                    }
                    else if (input.Key == ConsoleKey.E)
                    {
                        break;
                    }
                }

                System.Threading.Thread.Sleep(100);
            }

            // 익명메서드 : 한번만 사용할 경우
            //              익명메서드에서는 외부변수와 같은 이름의 지역변수를 선언해서는 안된다.
            dlgtAnonymous da = delegate(int x, int y) { return(x + y); };
            int           k  = da(2, 3);

            Console.WriteLine("익명메서드 실행결과: {0}", k);//5

            k = Calc(delegate(int x, int y) { return(x + y); });
            Console.WriteLine("익명메서드 실행결과: {0}", k);//5

            k = Calc(delegate(int x, int y) { return(x * y); });
            Console.WriteLine("익명메서드 실행결과: {0}", k);//6

            dlgtOut dout = delegate(int x, out int y) { y = 0; };

            dlgtAnonymous dRtn;

            SetDelegate(out dRtn);
            int z = dRtn(2, 3);

            Console.WriteLine(z);//10
        }
 public COMMANDID_ACT_UNIT( int nCommandId, dlgt.ActObj Act )
 {
     this.nCommandId = nCommandId;
     this.Act = Act;
 }