답변
이벤트를 사용하여 직렬 포트가 데이터를 수신했을 때 신호를 보냈습니다.
여기 내 인터페이스입니다.
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; }
}
이벤트는 메소드와 매우 유사합니다. 인터페이스를 사용하는 방법을 사용할 수 있습니다.
public interface IInterface {
event EventHandler QuestionAsked;
}
public class Class : IInterface {
event EventHandler QuestionAsked;
//As with typical events you might want an protected OnQuestionAsked
}
여기 내 응용 프로그램의 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로 업그레이드되었습니다.
.NET 프레임 워크의 훌륭한 예는 INotifyPropertyChanged 인터페이스입니다. 이 인터페이스는 하나의 멤버 (PropertyChanged 이벤트)로만 구성됩니다.
WPF에서는 컨트롤이 개체 인스턴스의 특정 속성을 표시하도록 지정할 수 있습니다. 기본 속성이 변경되면이 컨트롤이 어떻게 업데이트됩니까? 바인딩 된 객체가 가 인터페이스에서 INotifyPropertyChanged 구현하는 경우
는 WPF 프레임 워크는 가을하여 PropertyChanged에 불과 듣고 적절하게 업데이트 할 수 있습니다.
INotifyPropertyChanged은 프레임 워크를 통해 사용됩니다.
고전적인 시나리오를 봐 수동 볼 MVP 패턴입니다. 이 양식은 NameChanged 이벤트가있는보기 인터페이스를 구현합니다. 보기를 작성/사용하는 발표자가이 이벤트를 구독합니다. 텍스트 상자의 이름 텍스트가 변경되면이 이벤트가 발생합니다. 발표자에게 통보합니다. 발표자는보기 인터페이스의 이벤트에 대해서만 알고 있으므로 테스트를 위해 모의보기를 제공 할 수 있습니다. 보기는 발표자와 완전히 분리됩니다.
[Model View Presenter Styles] 문서 (https://lostechies.com/derekgreer/2008/11/23/model-view-presenter-styles/)에서 는 세 가지 MVP 패턴을 설명합니다. ** Presenter Style 관찰 **이라는 세 번째 패턴은 여기에 설명 된 ** Passive View ** 패턴과 가장 밀접한 관련이 있습니다. – DavidRR
- 1. 이벤트의 적절한 사용
- 2. 실제 사용
- 3. 실제 메서드 서명 리플렉션 사용
- 4. 퍼지 이론의 실제 사용?
- 5. `stackalloc` 키워드의 실제 사용
- 6. BufferManager의 실제 사용 사례
- 7. 디지털 줌 실제 사용?
- 8. 이벤트의 실제 유형 대신 객체 유형을 사용하는 이유는 무엇입니까?
- 9. 레이어 간 인터페이스 사용
- 10. 자바 인터페이스 사용
- 11. 인터페이스 및 그 사용
- 12. JNI에서 인터페이스 사용
- 13. 탐색 속성이있는 인터페이스 사용
- 14. 인터페이스 구성원에 다형성 사용
- 15. Ruby에서 바인딩 객체의 실제 사용
- 16. N 계층 아키텍처의 실제 사용
- 17. 시뮬레이터에서 실제 위치 서비스 사용
- 18. C에서 가상 함수의 실제 사용 #
- 19. 3 차원 행렬 : 실제 사용
- 20. Seralization 격리 수준의 실제 사용?
- 21. Powershell : $^및 $$의 실제 사용?
- 22. 실제 프로젝트에서 Quickcheck을 사용 했습니까
- 23. 캐스팅 오퍼레이터의 실제 사용 사례
- 24. C# 인덱서의 실제 사용 사례?
- 25. 인터페이스 유형에 할당 된 실제 객체 유형을 가져올 수 있습니까?
- 26. java에서 인터페이스 사용 ..Newb 질문
- 27. 인터페이스 및 의존성 주입 사용
- 28. DAO 클래스를 작성하기위한 인터페이스 사용
- 29. j2me의 Comparable 인터페이스 사용 방법
- 30. Delphi - 다른 장치의 인터페이스 사용
이벤트를 발생시킬 때 [이벤트 복사본 만들기] (https://msdn.microsoft.com/en-us/library/w369ty8x%28vs.100%29.aspx)를 참조하십시오 (' OnRaiseCustomEvent()')를 사용하여 ** 경쟁 조건 **이 발생하지 않도록하십시오. ** :'EventHandler handler = this.Closed; if (handler! = null) {...}' – DavidRR