【问题标题】:Handling event raised by a device in separate thread在单独的线程中处理设备引发的事件
【发布时间】:2012-07-24 03:48:56
【问题描述】:

我编写了一个 C# 应用程序,它与 2 个附加设备一起工作,即。显示图像的数字显微镜和返回计数器的计数装置。这两个设备同时运行并生成指示图像和计数器值变化的事件。

显微镜产生以下事件:

void _ImageCaptured(object source, WebcamEventArgs e)
{
}  

And counter generates below event:
void _OnRegisterValueChanged(object sender, RegisterChangeEventArgs args)
{
}

作为单线程应用程序,我当前的应用程序无法以相同的速度获取图像和计数器值,并且它们之间存在一些滞后。我想让这个应用程序多线程并在单独的线程中处理这两个事件。感谢您为实现这一目标提供的任何帮助。

【问题讨论】:

  • 您可能没有创建线程,但通常 C# 事件是从 ThreadPool 执行的。那么是什么产生了这些事件呢?你会做一些 beginRead() 或 beginReceive() 吗?或者你是从你的事件处理程序中调用 invoke() 并在 UI 线程上处理它们?

标签: c# multithreading event-handling


【解决方案1】:

因此,这意味着您要将在两个不同线程中运行的逻辑与初始化点分开 - 然后您将在不同线程中收到每个通知 - 每个通知都在一个触发事件的位置。然后,如果您需要在这些事件之间共享一些数据 - 只需对其进行同步即可。

【讨论】:

    猜你喜欢
    • 2013-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多