2009-11-17 16 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%28v=.100%29.aspx) OnRaiseCustomEvent() ')を使用して**競合状態**の可能性を回避します。**:' EventHandler handler = this.Closed; if(handler!= null){...} ' – DavidRR

16

.NETフレームワークの優れた例は、INotifyPropertyChangedインターフェイスです。このインターフェイスは、PropertyChangedイベントの1つのメンバーのみで構成されます。

WPFでは、コントロールにオブジェクトインスタンスの特定のプロパティが表示されることを指定できます。しかし、基になるプロパティーが変更された場合、このコントロールはどのように更新されますか?

バインドされたオブジェクトがインターフェイスをINotifyPropertyChangedの実装している場合、WPFフレームワークはちょうどを聞くことができるをにPropertyChangedし、適切に更新します。

2

を見て。 フォームは、NameChangedイベントを持つビュー・インタフェースを実装します。 ビューを作成または使用するプレゼンターは、このイベントにサブスクライブします。 テキストボックスの名前テキストが変更されると、このイベントが発生します。発表者に通知されます。 プレゼンターは、表示インターフェイスからのイベントのみを知っているので、テスト用のモックビューを提供できます。ビューはプレゼンターから完全に切り離されています。

+0

[Model View Presenter Styles](https://lostechies.com/derekgreer/2008/11/23/model-view-presenter-styles/)の記事** Presenter Styleを観察する**という3番目のパターンは、ここで説明する** Passive View **パターンと最もよく似ているように見えます。 – DavidRR

関連する問題