C 靜態委託實現全域性訊息派送

2021-10-09 12:08:36 字數 823 閱讀 6052

在使用c#做winform的時候,你肯定遇到過這樣的問題:

在a視窗中彈出b視窗,然後在b視窗彈出c視窗,當我們在c視窗修改了內容,要在a視窗重新整理出來,怎辦?是不是要a委託b,b又委託c呢?如果還有d,e,f,你不是要立馬崩潰了?

有無辦法,直接讓c去重新整理a的內容呢?

有,肯定有的。有些方案是做了專門的全域性訊息派送介面。

這裡介紹一種不用第三方介面,直接用靜態委託實現。

實現過程:

1、先定義乙個靜態的委託類,然後我們宣告乙個靜態的event action和呼叫這個action的靜態方法。

public

static

class

globalaction

acfanganupdatelist()

;}}

2、在a視窗繫結更新方法給它。

globalaction.acfanganupdatelist +

= updatefanganlist;

public

void

updatefanganlist()

3、在c視窗中使用。

globalaction.

goacfanganevent()

;

4、當b視窗關閉的時候,記得在a視窗中解除繫結的方法。

globalaction.acfanganupdatelist -

= updatefanganlist;

完美解決問題。只加多了1個靜態類而已,不用實現任何介面。

C語言 全域性?靜態全域性?區域性?靜態區域性

全域性變數 儲存在靜態區,程式執行的整個過程一直占用記憶體。所有檔案所有函式都可以使用 使用extern宣告 比較靈活。正是因為多個地方都可讀可寫,是乙個很危險的事,因為不知道某個時刻誰會將它改變,而且導致程式不方便移植。適當使用全域性變數還是有很多好處的,只是不推薦濫用全域性變數 區域性變數 除了...

c 全域性變數 靜態全域性變數

全域性變數是靜態儲存方式,靜態全域性變數也是靜態儲存方式,這兩者在儲存方式上並無不同。區別 雖在於非靜態全域性變數的作用域是整個源程式,當乙個源程式由多個原始檔組成時,靜態全域性變數在各個原始檔中都是有效的。靜態區域性變數則限制了其作用域,只在定義該變數的原始檔內有效,在同一源程式的其它原始檔中不能...

c 委託非同步實現

同步執行模式,是指語句在同步執行模式下,將始終保持對程式流的控制,直至程式結束。例如查詢操作,客戶機上的應用程式在向伺服器發出查詢操作的指令後,將一直等待伺服器將查詢結果返回客戶機端後,才繼續進行下一步操作 非同步執行模式,是指語句在非同步執行模式下,各語句執行結束的順序與語句執行開始的順序並不一定...