Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用ISynchronizeInvoke与设备通信?_C#_Asp.net - Fatal编程技术网

C# 如何使用ISynchronizeInvoke与设备通信?

C# 如何使用ISynchronizeInvoke与设备通信?,c#,asp.net,C#,Asp.net,我有一个指纹扫描仪和它的SDK(品牌:Suprema BioMini usb设备)。 他们为windows窗体应用程序提供了一些示例C#代码。 要初始化设备,请使用以下代码段: UFScannerManager ScannerManager; ScannerManager = new UFScannerManager(this); 这里“this”表示当前窗口窗体对象,构造函数需要“ISynchronizeInvoke sysInvoke”参数类型。因此,当传递“this”时,可以在windo

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

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

现在我需要使用ASP.Net和c实现一个基于web的程序,在这里我需要与指纹设备通信。因此,在初始化时,如何通过传递ISynchronizeInvoke对象来创建ScannerManager对象


感谢

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

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

我不确定是什么用例迫使您从web应用程序使用指纹扫描仪。扫描仪将连接到的位置-服务器计算机上-正确吗?所以,当必须有人在服务器机器附近使用它时,从远程客户端机器控制它有什么意义呢

尽管如此,您需要确定的第一件事是,您的扫描仪驱动程序API是否可以在没有UI线程或消息泵的情况下工作。如果这是可能的,那么您可能可以向API提供自己的
ISynchronizeInvoke
实现-请参阅此处以获取一个这样的示例实现:

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