我有一個C#應用程序,它訂閱我們的消息系統上的一個主題以進行值更新。當有新的價值出現時,我會做一些處理然後繼續。問題是,更新可能會比應用程序可以處理它們更快。我想要做的就是堅持最新的價值,所以我不想要一個隊列。例如,源發佈值「1」,我的應用程序收到它;在處理過程中,源在我的應用程序完成處理之前發佈序列(2,3,4,5);我的應用程序然後處理值「5」,與先前的值扔掉。如何異步處理郵件,處理時丟棄任何新郵件?
由於它是基於專有消息庫的,因此很難發佈有效的代碼示例,但我認爲這是一種常見模式,我只是無法弄清楚它的名稱......它看起來像處理函數必須在消息傳遞迴調之外的獨立線程上運行,但我不知道如何組織這些,例如該線程是如何通知價值變化的。有關我需要做什麼的一般提示?
+1,但如果我理解正確的問題,第一種方法將更多的是接收者而不是發件人。 – 2010-03-02 15:43:49
我只是改變了它。謝謝! – Matthias 2010-03-02 15:45:33
謝謝,我想我知道它的主旨,但Process()如何被調用?它是否必須在某種其他線程中運行某種循環,或者在接收到新消息時是否有任何方法來調用它,如果它尚未處理先前的值? – toasteroven 2010-03-02 16:30:07