我有一个指纹扫描仪和它的SDK (品牌: Suprema BioMini usb设备)。他们为windows表单应用程序提供了一些示例代码。若要初始化设备,请按照代码段进行初始化,
UFScannerManager ScannerManager;
ScannerManager = new UFScannerManager(this);这里"this“是指当前的窗口表单对象,构造函数需要一个"ISynchronizeInvoke sysInvoke”参数类型。因此,当传递“此”扫描仪时,可以在windows窗体应用程序中正确初始化。不需要担心ISynchronizeInvoke接口。
现在,我需要使用ASP.Net和c#实现一个web基础程序,在这里我需要与手指打印设备通信。那么,在初始化时,如何通过传递ScannerManager对象来创建ISynchronizeInvoke对象?
谢谢
发布于 2012-03-22 05:51:28
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服务--在服务中,您可以创建一个窗口表单来传递给API。Windows服务可以公开WCF接口(例如,通过命名管道),这样ASP.NET应用程序就可以与它交谈以控制/读取扫描仪信息。
https://stackoverflow.com/questions/9816980
复制相似问题