윈폼 부분
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Ex25Delegate
{
public partial class DelegateForm : Form
{
public DelegateForm()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("Thank you for clicking me !!!");
}
}
}
---------------------------------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Ex25Delegate
{
class Program
{
static void Main(string[] args)
{
OrderManager om = new OrderManager();
FaxManager fm = new FaxManager();
MailManager mm = new MailManager();
//델리게이트 순서 4
//델리게이트 변수에 델리게이트 등록
om.OrderReceived +=
new OrderReceivedHandler(fm.SendFax);
om.OrderReceived +=
new OrderReceivedHandler(mm.SendMail);
om.ProcessOrder();
DelegateForm form = new DelegateForm();
form.ShowDialog();
}
}
// 델리게이트 순서 1
class OrderReceivedArgs : EventArgs
{
public int OrderNo;
}
//void (object, EventArgs) 메서드를 저장하는 델리게이트 선언
delegate void OrderReceivedHandler(object sender, OrderReceivedArgs e);
class OrderManager
{
// 델리게이트 순서 2
//델리게이트 변수 선언
//public OrderReceivedHandler OrderReceived;
public event OrderReceivedHandler OrderReceived; // 이벤트 추가
public void ProcessOrder()
{
// 1. 주문데이터를 DB에 저장
Console.WriteLine("주분을 정상적으로 처리했습니다.");
// 2. 배송회사에 팩스보내기 및 3. 고객에게 메일 보내기
//FaxManager fm = new FaxManager();
//fm.SendFax();
if (OrderReceived != null)
{
// 델리게이트 순서 5
//델리게이트 호출 -> 델리게이트에 포함된 메서드 호출
//OrderReceived(this, EventArgs.Empty); 아래를 줄인것ㅇ
//OrderReceived.Invoke(this, EventArgs.Empty);
OrderReceivedArgs args = new OrderReceivedArgs();
args.OrderNo = 111;
OrderReceived(this, args);
}
}
}
class FaxManager
{ // 델리게이트 순서 3
public void SendFax(object sender, OrderReceivedArgs e)
{
Console.WriteLine("주문번호 : " + e.OrderNo);
Console.WriteLine("팩스를 전송했습니다.");
}
}
class MailManager
{
public void SendMail(object sender, OrderReceivedArgs e)
{
Console.WriteLine("주문번호 : " + e.OrderNo);
Console.WriteLine("메일을 전송했습니다.");
}
}
}
'프로그램 > C# - Study' 카테고리의 다른 글
C# - Ex27Resource (0) | 2010.10.13 |
---|---|
C# - Ex26Thread 쓰래드 (3) | 2010.10.13 |
C# - Ex24DirectoryAndFile (0) | 2010.10.13 |
C# - Ex23IO - 파일입출력( XmlSerializer, SoapFormatter, Serialization ) (0) | 2010.10.13 |
11D - 예외처리(Exception) (0) | 2010.09.24 |