我是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#中使用基于事件的编程;在图像捕获之后,由函数引发事件,该事件由第一图像处理模块登记,并且在第一图像处理模块完成其工作之后,引发事件以在表单上显示图像,并且引发另一事件以将数据传递到第二图像处理单元
但我有个不同的问题:
1.我知道捕获的图像将显示延迟,因为第一个图像处理单元的计算时间,但我看到了很多滞后显示图像
1.我错过了一些画面,但我不知道为什么
解决这些问题的最佳方案是什么?
每个相机帧只是一个位图图像。
我有一个事件MyEvent
,我有一个静态int id,它以0开头,在引发事件时递增。
和寄存器4功能来处理此事件。
并在事件处理程序中打印id,但在某些处理程序中随机缺少某些id
1条答案
按热度按时间h79rfbju1#
您可以将Rx.Net用于事件驱动的非阻塞应用程序。
您也可以考虑在C#中使用
async
和await
结构。如果你想做基于Actor的编程,你可以使用Akka.NET