2017-10-10 34 views
2

我是java程序員和一個項目,我應該在java中啓動c#窗體窗體應用程序編程 我們有框架,如dropwizard。這些框架分別管理線程 或在vertx中我們有事件總線,並且我們可以以最簡單的方式實現pub/sub和producer/consumer,並且具有交付保證和自動線程管理(對於每個消息,如果需要創建新線程) 我應該解決這個問題:交付保證和自動線程發佈者/訂戶c#

Frame Captured By Camera, do IO, do another IO -> First DoSome Image Processing -> Show on Form Picture Box -> Second Image Processing -> Match Similar Frames And Save in Data Structure 

每個圖像處理具有計算的很多的,每幀有它自己的流量 幀可以同時處理和每個處理單元都可以單獨控制 我決定使用基於事件的編程在c# 之後,圖像捕獲了一個由函數引發的事件,這個事件由第一個圖像處理模塊註冊並且在冷杉ST圖像處理模塊完成了它的工作引起的事件,以顯示在表格圖像和上升的另一事件將數據傳遞給第二圖像處理單元 但我有不同勢問題:

  1. 我知道拍攝的圖像將因爲延遲顯示來第一圖像處理單元的計算時間,但我看到很多滯後我展示我錯過了一些幀圖像
  2. 但我不無爲什麼

什麼是解決這些問題的最佳方案。 每個攝像機架僅僅是一個位圖圖像 我有一個事件名稱爲MyEvent和我有上升事件 時0和increament啓動和註冊4函數來處理這個事件 和打印ID在事件處理靜態INT ID但在一些處理程序中隨機丟失了一些ID

+0

在c#中事件是同步的。您必須使用TPL才能阻止UI線程。 關於第二點,我不知道在你的上下文中框架的含義。顯示一些代碼。 – Alex

+0

@Alex每個相機框架只是一個位圖圖像 – user298582

回答

0

對於事件驅動的非阻塞應用程序,您可以使用Rx.Net

你也可以考慮在C#中使用asyncawait語言結構。

如果你想做基於Actor的編程,你可以使用Akka.NET

+0

'TPL數據流'也是一個選項,而不是'Akka.Net' – VMAtm