最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解C#如何實(shí)現(xiàn)一個(gè)安全的事件訂閱器

 更新時(shí)間:2024年01月31日 13:57:06   作者:搬磚的詩人Z  
事件訂閱器是一個(gè)對(duì)象,它訂閱(或監(jiān)聽)某個(gè)事件,并在事件發(fā)生時(shí)執(zhí)行相應(yīng)的操作,本文主要介紹了C#實(shí)現(xiàn)一個(gè)安全的事件訂閱器的相關(guān)知識(shí),感興趣的可以了解下

1.解釋下什么是事件訂閱器

在C#的上下文中,事件訂閱器是一種用于處理特定事件的機(jī)制。

事件(Event):事件是在軟件應(yīng)用程序中發(fā)生的事物,如按鈕被點(diǎn)擊、數(shù)據(jù)被更改等。在C#中,事件是通過使用event關(guān)鍵字聲明的委托(delegate)來定義的。DevExpress控件和框架通常會(huì)觸發(fā)各種事件,以便您的應(yīng)用程序能夠?qū)τ脩舻慕换セ蚱渌到y(tǒng)變化做出響應(yīng)。

事件訂閱器: 事件訂閱器是一個(gè)對(duì)象,它訂閱(或監(jiān)聽)某個(gè)事件,并在事件發(fā)生時(shí)執(zhí)行相應(yīng)的操作。

2.事件訂閱器有什么作用

通知訂閱對(duì)象,告知變化發(fā)生,并把變化發(fā)生時(shí)候的數(shù)據(jù)通知到具體訂閱的委托方法中。

3.示例代碼

我這邊封裝了一個(gè)全局的事件訂閱器,采用一個(gè)靜態(tài)函數(shù)的方法來實(shí)現(xiàn)全局可以調(diào)用,試用一個(gè)字段存儲(chǔ)當(dāng)前訂閱的消息,防止一個(gè)事件多次訂閱的問題。

代碼如下:

 public static class EventSubscriber
 {
     /// <summary>
     /// 訂閱消息字典
     /// </summary>
     private static Dictionary<string, SendMessageHandler> MsgDict = new Dictionary<string, SendMessageHandler>();
     public delegate void SendMessageHandler(object MsgContent);

     /// <summary>
     /// 訂閱消息
     /// </summary>
     /// <param name="name">消息唯一名稱</param>
     /// <param name="AcceptFunction">接受消息的方法</param>
     /// <exception cref="Exception"></exception>
     public static void SubMsg(string name, SendMessageHandler AcceptFunction)
     {
         if (!MsgDict.ContainsKey(name))
         {
             MsgDict.Add(name, AcceptFunction);
         }
         else
         {
             // throw new Exception("已經(jīng)有" + name + "名稱的訂閱");
         }
     }

     /// <summary>
     /// 移除指定訂閱消息
     /// </summary>
     /// <param name="name">消息名稱</param>
     public static void UnSubMsg(string name)
     {
         if (MsgDict.ContainsKey(name))
         {
             MsgDict.Remove(name);
         }
     }

     /// <summary>
     /// 發(fā)送消息
     /// </summary>
     /// <param name="name">消息名稱</param>
     /// <param name="msgContent">消息內(nèi)容</param>
     public static void SendMsg(string name, object msgContent)
     {
         if (MsgDict.ContainsKey(name))
         {
             MsgDict[name].Invoke(msgContent);
         }
     }
 }

使用方法:

訂閱消息:

  EventSubscriber.SubMsg("GetDataTable", SendMessageHandler);

當(dāng)消息通知時(shí)候,獲得事件傳遞過來的數(shù)據(jù)并處理

    public void SendMessageHandler(object MsgContent)
    {
        var data = (DataTable?)MsgContent;
        TableWait = true;
    }

到此這篇關(guān)于詳解C#如何實(shí)現(xiàn)一個(gè)安全的事件訂閱器的文章就介紹到這了,更多相關(guān)C#事件訂閱器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • unity實(shí)現(xiàn)虛擬搖桿控制Virtual Joystick

    unity實(shí)現(xiàn)虛擬搖桿控制Virtual Joystick

    這篇文章主要為大家詳細(xì)介紹了unity實(shí)現(xiàn)虛擬搖桿控制Virtual Joystick,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C#反射調(diào)用拓展類方法實(shí)例代碼

    C#反射調(diào)用拓展類方法實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于C#反射調(diào)用拓展類方法的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-01-01
  • c#中DateTime.Now函數(shù)的使用詳解

    c#中DateTime.Now函數(shù)的使用詳解

    本篇文章對(duì)c#中DateTime.Now函數(shù)的使用進(jìn)行了介紹。需要的朋友參考下
    2013-05-05
  • C# 連接SQL數(shù)據(jù)庫的方法及常用連接字符串

    C# 連接SQL數(shù)據(jù)庫的方法及常用連接字符串

    這篇文章主要介紹了C# 連接SQL數(shù)據(jù)庫的方法及常用連接字符串,有需要的朋友可以參考一下
    2014-01-01
  • C#創(chuàng)建安全的字典(Dictionary)存儲(chǔ)結(jié)構(gòu)

    C#創(chuàng)建安全的字典(Dictionary)存儲(chǔ)結(jié)構(gòu)

    本文主要對(duì)存儲(chǔ)結(jié)構(gòu)字典(Dictionary)的一些常用方法進(jìn)行簡(jiǎn)單的說明,并闡述了如何創(chuàng)建安全的字典(Dictionary)存儲(chǔ)結(jié)構(gòu)。希望對(duì)大家有所幫助
    2016-12-12
  • C#特性(Attributes)和反射(Reflection)詳解

    C#特性(Attributes)和反射(Reflection)詳解

    這篇文章主要介紹了C#特性(Attributes)和反射(Reflection),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-05-05
  • C#獲取動(dòng)態(tài)生成的CheckBox值

    C#獲取動(dòng)態(tài)生成的CheckBox值

    checkbox是VS2012的常用控件之一,可以方便的為某些功能取消或啟用,下面教你如何簡(jiǎn)單使用checkbox。本文通過兩種方法給大家介紹,需要的朋友一起看看吧
    2015-09-09
  • 在C#中用表格替換Word文檔中文本的詳細(xì)步驟

    在C#中用表格替換Word文檔中文本的詳細(xì)步驟

    在日常的文檔處理工作中,我們經(jīng)常會(huì)遇到這樣的場(chǎng)景:需要將 Word 文檔中的特定文本內(nèi)容,替換為結(jié)構(gòu)化的實(shí)際數(shù)據(jù)表格,使用Spire.Doc for .NET庫,我們可以通過精準(zhǔn)定位文本并利用其強(qiáng)大的替換功能,下面小編為大家詳細(xì)說說,需要的朋友可以參考下
    2025-09-09
  • ref 和out傳參的區(qū)別分析

    ref 和out傳參的區(qū)別分析

    今天又遇到這個(gè)問題了,問了問同事,他說最近面試的時(shí)候,也問道他了,于是給我講了講,現(xiàn)在大概是記住了,分享一下。
    2013-04-04
  • WPF開發(fā)txt閱讀器實(shí)現(xiàn)目錄提取功能

    WPF開發(fā)txt閱讀器實(shí)現(xiàn)目錄提取功能

    這篇文章主要為大家詳細(xì)介紹了WPF開發(fā)txt閱讀器時(shí)如何實(shí)現(xiàn)目錄提取功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-06-06

最新評(píng)論

华蓥市| 娱乐| 叶城县| 蓬溪县| 高尔夫| 托里县| 宜兴市| 寻乌县| 海安县| 建平县| 青冈县| 吐鲁番市| 萨迦县| 通许县| 曲周县| 酒泉市| 冀州市| 苍溪县| 康定县| 宁强县| 吴江市| 平湖市| 乳山市| 耒阳市| 香格里拉县| 贡嘎县| 霸州市| 泊头市| 无锡市| 台湾省| 临潭县| 岳普湖县| 武清区| 阿勒泰市| 酉阳| 玉屏| 延津县| 江西省| 阜康市| 慈利县| 台东县|