2012-03-22 43 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應用程序可以與它通信來控制/讀取掃描器信息。

相關問題