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

Java 交付保证和自动线程发布者/订阅者c#,java,c#,multithreading,winforms,Java,C#,Multithreading,Winforms,我是java程序员,对于一个项目,我应该开始c#windows窗体应用程序编程 在java中,我们有dropwizard之类的框架。这些框架分别管理线程 或者在vertx中,我们有事件总线,通过它,我们可以以最简单的方式实现发布/订阅和生产者/消费者,我们有交付保证和自动线程管理(对于每条消息,如果需要,创建新线程) 我应该解决这个问题: Frame Captured By Camera, do IO, do another IO -> First DoSome Image Process

我是java程序员,对于一个项目,我应该开始c#windows窗体应用程序编程 在java中,我们有dropwizard之类的框架。这些框架分别管理线程 或者在vertx中,我们有事件总线,通过它,我们可以以最简单的方式实现发布/订阅和生产者/消费者,我们有交付保证和自动线程管理(对于每条消息,如果需要,创建新线程) 我应该解决这个问题:

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

  • 我知道由于第一个图像处理单元的计算时间,捕获的图像将延迟显示,但我看到显示图像时有很多延迟
  • 我错过了一些画面,但我不知道为什么
  • 解决这些问题的最佳解决方案是什么。 每个相机帧只是一个位图图像 我有一个名为MyEvent的事件,我有一个静态int id,它以0开头,当事件上升时递增 和寄存器4函数来处理此事件 并在事件处理程序中打印id,但在某些处理程序中随机缺少一些id

    可用于事件驱动的非阻塞应用程序

    也可以考虑使用<代码> Aycy<<代码>和<代码>等待< /Cord>语言构造。p>


    如果你想做基于角色的编程,你可以在c中使用

    ,事件是同步的。为了不阻塞UI线程,必须使用TPL。关于第二点,我不知道框架在你的上下文中是什么意思。显示一些代码。@Alex每个相机帧只是一个位图图像
    TPL数据流
    也是一个选项,而不是
    Akka.Net