【问题标题】:how to use ISynchronizeInvoke to communicate with a device?如何使用 ISynchronizeInvoke 与设备通信?
【发布时间】:2012-03-22 13:51:28
【问题描述】:

我有一个指纹扫描仪,它是 SDK(品牌:Suprema BioMini USB 设备)。 他们为 windows 窗体 应用程序提供了一些示例 C# 代码。 使用以下代码段来初始化设备,

UFScannerManager ScannerManager;
ScannerManager = new UFScannerManager(this);

这里“this”表示当前窗体对象,构造函数需要一个“ISynchronizeInvoke sysInvoke”参数类型。因此,当传递“this”时,扫描仪可以在 Windows 窗体应用程序中正确初始化。无需担心 ISynchronizeInvoke 接口。

现在我需要使用 ASP.Net 和 c# 来实现一个 web 基础程序,我需要与指纹设备进行通信。那么在初始化时如何通过传递 ISynchronizeInvoke 对象来创建 ScannerManager 对象??

谢谢

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    ISynchronizeInvoke 接口用于控制委托的同步/异步调用。通常,接口的使用者会在不同的线程上执行一些操作,然后在调用者线程上同步回传回结果。

    在您的情况下,UFScannerManager 很可能会在 Windows 窗体的 UI 线程上进行回调,因此它接受它作为参数。

    我不确定您有什么用例会迫使您从 Web 应用程序中使用指纹扫描仪。扫描仪将连接到哪里 - 在服务器机器上 - 正确吗?那么当有人必须在服务器机器附近物理上使用它时,从远程客户端机器控制它有什么意义呢。

    说了这么多,首先您需要确定的是,您的扫描仪驱动程序 API 是否可以在没有 UI 线程或消息泵的情况下工作。如果可能的话,您可能可以向 API 提供自己的 ISynchronizeInvoke 实现 - 请参阅此处以获取此类示例实现:http://blogs.msdn.com/b/jaredpar/archive/2008/01/07/isynchronizeinvoke-now.aspx

    这很可能不起作用,因为它可能需要带有 Windows 消息泵的 UI 线程。如果您可能需要构建一个基本上与扫描仪 API 通信的 Windows 服务 - 在该服务中,您可以创建一个 Windows 表单以传递给 API。 Windows 服务可以公开 WCF 接口(比如通过命名管道),以便 ASP.NET 应用程序可以与其通信以控制/读取扫描仪信息。

    【讨论】:

      猜你喜欢
      • 2015-11-06
      • 2012-04-28
      • 1970-01-01
      • 2015-05-19
      • 2015-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多