2019年2月3日 星期日

C# 事件(event)發行(publish)訂閱(subscribe)

導言:
記錄Evnet的簡單範例

Step 1:程式碼

//接收方
class 範例_事件
{
    來源者 t = new 來源者();
    public 範例_事件()
    {
        t.發行事件 += 訂閱事件;
    }
    public void 訂閱事件(object sender, string e)
    {
        //處理訂閱資料
    }
}
//發行方
public class 來源者
{
    public event EventHandler<string> 發行事件;
    public void 做事()
    {
        觸發事件("ABC");
    }
    protected virtual void 觸發事件(string e)
    {
        EventHandler<string> 處理 = 發行事件;
        if (處理 != null)
        {
            處理(this, e);
        }
    }
}





總結:
大家作的範例都好複雜,我把呼叫事件作出最簡單化。
微軟文件依然保持著,不知所云的特性。
連標題都不知在說什麼(HOW TO:發行符合 .NET Framework 方針的事件),
讓你找不到範例。 

概念很簡單,在來源的class中製作一個事件(event)。
然後在目前的class使用「+=」來訂閱事件。
當來源class觸發時,目前的class能接到這事件然後處理。
如果不使用event的話,就必須定期監看來源class是否有變動(被動式)。
一來慢一步,二來耗損資源。事件就是主動發送訊息給下游。

參考資料:

沒有留言:

張貼留言