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(); } }
public void producirDonaCanela() { for (int i = 0; i < 101; i++) { dlgt d3 = new dlgt(contadorDonaCanela); Invoke(d3, new object[] { i }); Thread.Sleep(10000); } }
public void producirDonaVainilla() { for (int i = 0; i < 101; i++) { dlgt d2 = new dlgt(contadorDonaVainilla); Invoke(d2, new object[] { i }); Thread.Sleep(3000); } }
//Metodos public void producirDonaChocolate() { for (int i = 0; i < 101; i++) { dlgt d1 = new dlgt(contadorDonaChocolate); Invoke(d1, new object[] { i }); Thread.Sleep(5000); } }
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); }
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 ; }
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; }