交货保证和自动线程发布者/订阅者c#

时间:2017-10-10 05:48:07

标签: java c# multithreading winforms

我是java程序员,对于一个项目,我应该开始c#windows表单应用程序编程 在java中我们有框架,如dropwizard。这些框架单独管理线程 或者在vertx中我们有事件总线,有了它,我们可以用最简单的方式实现pub / sub和producer / consumer,并且我们有交付保证和自动线程管理(如果需要,为每条消息创建新线程) 我应该解决这个问题:

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#中使用基于事件的编程 在图像捕获事件引发的事件之后,由First Image Processing Module注册的事件和第一图像处理模块完成其工作上升事件以在Form上显示图像并上升另一事件以将数据传递到第二图像处理单元 但我有不同的问题:

  1. 我知道由于第一个图像处理单元计算时间,拍摄的图像会延迟显示,但我看到很多滞后我显示图像
  2. 我错过了一些帧但是我不知道为什么
  3. 解决这些问题的最佳解决方案是什么。 每个相机帧都只是一个位图图像 我有一个名为 MyEvent 的事件,我有一个以0开头的静态int id,并且在上升事件时有增量 并注册4函数来处理此事件 并在事件处理程序中打印id但在某些处理程序中随机丢失了一些ID

1 个答案:

答案 0 :(得分:0)

您可以将Rx.Net用于事件驱动的非阻止应用程序。

您还可以考虑在C#中使用asyncawait语言结构。

如果您想进行基于Actor的编程,可以使用Akka.NET