2009-11-17 7 views

답변

42

이벤트를 사용하여 직렬 포트가 데이터를 수신했을 때 신호를 보냈습니다.

여기 내 인터페이스입니다.

public interface ISerialPortWatcher 
{ 
    event EventHandler<ReceivedDataEventArgs> ReceivedData; 
    event EventHandler StartedListening; 
    event EventHandler StoppedListening; 

    SerialPortSettings PortOptions { set; } 

    bool Listening { get; set; } 
    void Stop(); 
    void Start(); 
} 

public class ReceivedDataEventArgs : EventArgs 
{ 
    public ReceivedDataEventArgs(string data) 
    { 
     Data = data; 
    } 
    public string Data { get; private set; } 
} 
4

이벤트는 메소드와 매우 유사합니다. 인터페이스를 사용하는 방법을 사용할 수 있습니다.

public interface IInterface { 
    event EventHandler QuestionAsked; 
} 

public class Class : IInterface { 
    event EventHandler QuestionAsked; 

    //As with typical events you might want an protected OnQuestionAsked 
} 
13

여기 내 응용 프로그램의 1이 같은 일부 코드가 하나의 예

public interface IMainAppWindow 
{ 
    event EventHandler Closed; 
} 

// version 1 main window 
public MainForm : Form , IMainAppWindow 
{ 

} 

// version 2 main window 
public MainWindow : Window , IMainAppWindow 
{ 
    event EventHandler Closed; 

    public void OnClosed(object sender,RoutedEventArgs e) 
    { 
    if(Closed != null) 
    { 
     Closed(this,e); 
    } 
    } 
} 

입니다. 응용 프로그램은 winforms로 작성된 다음 WPF로 업그레이드되었습니다.

+0

이벤트를 발생시킬 때 [이벤트 복사본 만들기] (https://msdn.microsoft.com/en-us/library/w369ty8x%28vs.100%29.aspx)를 참조하십시오 (' OnRaiseCustomEvent()')를 사용하여 ** 경쟁 조건 **이 발생하지 않도록하십시오. ** :'EventHandler handler = this.Closed; if (handler! = null) {...}' – DavidRR

16

.NET 프레임 워크의 훌륭한 예는 INotifyPropertyChanged 인터페이스입니다. 이 인터페이스는 하나의 멤버 (PropertyChanged 이벤트)로만 구성됩니다.

WPF에서는 컨트롤이 개체 인스턴스의 특정 속성을 표시하도록 지정할 수 있습니다. 기본 속성이 변경되면이 컨트롤이 어떻게 업데이트됩니까? 바인딩 된 객체가 인터페이스에서 INotifyPropertyChanged 구현하는 경우

는 WPF 프레임 워크는 을하여 PropertyChanged에 불과 듣고 적절하게 업데이트 할 수 있습니다.

2

고전적인 시나리오를 봐 수동 볼 MVP 패턴입니다. 이 양식은 NameChanged 이벤트가있는보기 인터페이스를 구현합니다. 보기를 작성/사용하는 발표자가이 이벤트를 구독합니다. 텍스트 상자의 이름 텍스트가 변경되면이 이벤트가 발생합니다. 발표자에게 통보합니다. 발표자는보기 인터페이스의 이벤트에 대해서만 알고 있으므로 테스트를 위해 모의보기를 제공 할 수 있습니다. 보기는 발표자와 완전히 분리됩니다.

+0

[Model View Presenter Styles] 문서 (https://lostechies.com/derekgreer/2008/11/23/model-view-presenter-styles/)에서 는 세 가지 MVP 패턴을 설명합니다. ** Presenter Style 관찰 **이라는 세 번째 패턴은 여기에 설명 된 ** Passive View ** 패턴과 가장 밀접한 관련이 있습니다. – DavidRR