讓C 事件也可以非同步觸發

2021-07-09 14:49:22 字數 1003 閱讀 6456

在做專案時,通過事件機制來觸發一些動作。本能的過分相信系統事件機制的併發處理能力,結果發現程式在事件擁堵的時候會假死。google了下,發現事件也可以非同步,整理如下:

如何實現非同步事件呼叫呢?事件其實是一種multicastdelegate(多播委託)。而multicastdelegate類提供了乙個getinvocationlist方法,該方法返回此多播委託的委託呼叫陣列。利用該方法就能實現我們的非同步事件呼叫功能。

**:using system;

using system.threading;

using system.runtime.remoting.messaging;

namespace processtest

", thread.currentthread.managedthreadid);

thread.sleep(1000); }

//方法2

static void method2(object sender, eventargs e)

", thread.currentthread.managedthreadid);

thread.sleep(1000); }

static void main(string args)

", thread.currentthread.managedthreadid);

//將method1和method2註冊到事件中

onevent += new eventhandler(method1);

onevent += new eventhandler(method2);

//下面的**實現事件的非同步呼叫

//獲取事件中的多路委託列表

delegate delegary = onevent.getinvocationlist();

//遍歷委託列表

foreach (eventhandlerdeleg in delegary)

system.console.readkey(); }

} }

讓C 事件也可以非同步觸發

在做專案時,通過事件機制來觸發一些動作。本能的過分相信 系統如何實現非同步事件呼叫呢?事件其實是一種multicastdelegate 多播委託 而multicastdelegate類提供了乙個getinvocationlist方法,該方法返回此多播委託的委託呼叫陣列。利用該方法就能實現我們的非同步...

讓禪道也可以玩BearyChat

簡單的理解,bearycchat是一種im,是一種能聚合各種ms系統訊息的東西,是團隊協作過程中訊息流轉的利器。我是工具控,所以不折騰不舒服。廢話不說,上碼 path to zentao module action ext model loghistory.php log histories for...

讓禪道也可以玩BearyChat

簡單的理解,bearycchat是一種im,是一種能聚合各種ms系統訊息的東西,是團隊協作過程中訊息流轉的利器。我是工具控,所以不折騰不舒服。廢話不說,上碼 path to zentao module action ext model loghistory.php log histories for...