2017-10-10 51 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