Kategoriak: All - 方法

arabera 余小章 's 8 years ago

707

C# 事件

C# 事件

C# 事件

真實世界的應用 三種非同步模型

TAP (Task-based Asynchronous Pattern)
LINQPad Samples:Asynchronous Functions in C#
欲知詳情,請在google搜尋"余小章 TAP"
Async 為後綴詞的方法,搭配 async / await 關鍵字,讓開發人員大大減少了開發非同步的成本。
APM (Asynchronous Programming Model)
欲知詳情,請在google搜尋"余小章 APM"
前綴帶有Beginxxx,Endxxx,如:FileStream.BeginRead
EAP (Event-based Asynchronous Pattern)
使用內建 EventHandler delegate

public event EventHandler<ConnectCompletedEventArgs> ConnectCompleted;

e 代表的是通知內容

sender代表的是觸發事件的來源物件

public delegate void EventHandler(object sender, TEventArgs e);

EventHandler 就是傳入兩個參數,object,TEventArgs 沒有回傳值的委派

定義 On 開頭的前綴詞方法體

protected virtual void OnConnect(ConnectCompletedEventArgs e)

{

if (ConnectCompleted != null)

{

ConnectCompleted(this, e);

}

}

宣告 event

public event ConnectCompletedEventHandler ConnectCompleted;

宣告 delegate

public delegate void ConnectCompletedEventHandler(object sender, ConnectCompletedEventArgs e);

實作 EventArgs

public class ConnectCompletedEventArgs : EventArgs

{

private bool _isConnected;

public bool IsConnected

{

get { return _isConnected; }

set { _isConnected = value; }

}

}

需要用+=來進行註冊,利如:this.button1.Click += new System.EventHandler(this.button1_Click);
EAP 其實我們很常見
因為時間的關係所以我只會使用EAP來演練

真實世界的應用 跨執行緒更新UI

Sample:SimpleCrossThread

Observer Pattern

在此種模式中,一個目標物件管理所有相依於它的觀察者物件,並且在它本身的狀態改變時主動發出通知。這通常透過呼叫各觀察者所提供的方法來實現。此種模式通常被用來實作事件處理系統。
觀察者模式(有時又被稱為發布/訂閱模式)是軟體設計模式的一種。