欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2024年01月31日 13:57:06   作者:搬磚的詩(shī)人Z  
事件訂閱器是一個(gè)對(duì)象,它訂閱(或監(jiān)聽(tīng))某個(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#中,事件是通過(guò)使用event關(guān)鍵字聲明的委托(delegate)來(lái)定義的。DevExpress控件和框架通常會(huì)觸發(fā)各種事件,以便您的應(yīng)用程序能夠?qū)τ脩舻慕换セ蚱渌到y(tǒng)變化做出響應(yīng)。

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

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

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

3.示例代碼

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

代碼如下:

 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í)候,獲得事件傳遞過(guò)來(lái)的數(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)文章

  • C#.Net基于正則表達(dá)式抓取百度百家文章列表的方法示例

    C#.Net基于正則表達(dá)式抓取百度百家文章列表的方法示例

    這篇文章主要介紹了C#.Net基于正則表達(dá)式抓取百度百家文章列表的方法,結(jié)合實(shí)例形式分析了C#獲取百度百家文章內(nèi)容及使用正則表達(dá)式匹配標(biāo)題、內(nèi)容、地址等相關(guān)操作技巧,需要的朋友可以參考下
    2017-08-08
  • c# 繼承快速入門

    c# 繼承快速入門

    這篇文章主要介紹了c# 繼承快速入門的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-03-03
  • C#獲取屏幕分辨率縮放比例的方法與示例

    C#獲取屏幕分辨率縮放比例的方法與示例

    在C#中,獲取屏幕分辨率縮放比例通常指的是Dpi縮放比例,它表示顯示設(shè)備的獨(dú)立像素與設(shè)備無(wú)關(guān)像素(96 DPI)的比例,這通常用于確保應(yīng)用程序在不同分辨率和縮放設(shè)置的顯示設(shè)備上都能正確顯示,本文給大家介紹了C#獲取屏幕分辨率縮放比例的方法與示例,需要的朋友可以參考下
    2024-07-07
  • C#操作實(shí)現(xiàn)Word全域查找且替換

    C#操作實(shí)現(xiàn)Word全域查找且替換

    這篇文章主要為大家詳細(xì)介紹了C#如何操作實(shí)現(xiàn)Word全域查找且替換功能,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以參考下
    2024-04-04
  • c#中使用BackgroundWorker的實(shí)現(xiàn)

    c#中使用BackgroundWorker的實(shí)現(xiàn)

    本文主要介紹了c#中使用BackgroundWorker的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • C#導(dǎo)出Excel的方法

    C#導(dǎo)出Excel的方法

    本文給大家分享的是基于.net 1.0開(kāi)發(fā)的程序如何實(shí)現(xiàn)導(dǎo)出Excel的方法和示例,使用的是UltraWebGrid自帶導(dǎo)出Excel的控件,非常的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下。
    2015-06-06
  • C#編程之事務(wù)用法

    C#編程之事務(wù)用法

    這篇文章主要介紹了C#編程之事務(wù)用法,結(jié)合實(shí)例形式對(duì)比分析了C#中事務(wù)提交與回滾的具體實(shí)現(xiàn)技巧與相關(guān)注意事項(xiàng),具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-11-11
  • C# 使用WPF 用MediaElement控件實(shí)現(xiàn)視頻循環(huán)播放

    C# 使用WPF 用MediaElement控件實(shí)現(xiàn)視頻循環(huán)播放

    在WPF里用MediaElement控件,實(shí)現(xiàn)一個(gè)循環(huán)播放單一視頻的程序,同時(shí)可以控制視頻的播放、暫停、停止。這篇文章給大家介紹了C# 使用WPF 用MediaElement控件實(shí)現(xiàn)視頻循環(huán)播放,需要的朋友參考下吧
    2018-04-04
  • c#委托把方法當(dāng)成參數(shù)(實(shí)例講解)

    c#委托把方法當(dāng)成參數(shù)(實(shí)例講解)

    本篇文章主要是對(duì)c#委托把方法當(dāng)成參數(shù)的實(shí)例代碼進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2014-01-01
  • C#控制臺(tái)模擬電梯工作原理

    C#控制臺(tái)模擬電梯工作原理

    簡(jiǎn)單的模擬一下電梯的運(yùn)行,電梯內(nèi)部和外部樓層呼叫的優(yōu)先級(jí)判斷。以前學(xué)硬件的時(shí)候做這個(gè)不成問(wèn)題,現(xiàn)在用軟件來(lái)模擬對(duì)我來(lái)說(shuō)比較難,要C#的圖形界面。求高手賜教。
    2015-06-06

最新評(píng)論