2012-03-22 72 views
0

我有一个指纹扫描仪,它的SDK(品牌:Suprema的BioMini USB设备)。 它们提供了一些示例C#代码窗口形式应用程序。 要初始化下面的代码段装置时,如何使用ISynchronizeInvoke与设备进行通信?

UFScannerManager ScannerManager; 
ScannerManager = new UFScannerManager(this); 

此处“这”是指当前窗口形式对象,构造所需要的“ISynchronizeInvoke sysInvoke”参数的类型。所以当传递“this”时,扫描器可以在Windows窗体应用程序中正确初始化。无需担心ISynchronizeInvoke接口。

现在我需要实现使用ASP.Net用c#,其中i需要用手指打印设备进行通信的网络基础程序。所以初始化时如何通过传递ISynchronizeInvoke对象来创建ScannerManager对象?

感谢

回答

2

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

在你的情况下,最有可能,UFScannerManager将会使Windows上的形式,因此它被接受它作为一个参数的UI线程回调。

我不知道那是什么,你有这迫使你使用指纹扫描仪从Web应用程序的使用情况。扫描仪将在何处连接 - 在服务器机器上 - 是否正确?那么当有人需要在服务器机器附近物理使用它时,从远程客户机控制它有什么意义。

说了这么多,首先需要确定的是,如果您的扫描仪驱动程序API可以在没有UI线程或消息泵的情况下工作。如果这是可能的,那么你或许可以提供自己的实现ISynchronizeInvoke的API - 在这里看到这样的一个简单的实现:http://blogs.msdn.com/b/jaredpar/archive/2008/01/07/isynchronizeinvoke-now.aspx

最有可能的,这可能不工作,因为它可能需要与Windows消息泵UI线程。在这种情况下,您需要构建一个基本上与扫描器API通信的Windows服务 - 在服务中,您可以创建一个窗体传递给API。 Windows服务可以公开WCF接口(比如通过命名管道),以便ASP.NET应用程序可以与它通信来控制/读取扫描器信息。

相关问题