0
我正在使用PCSC庫進行智能卡讀卡器事件檢測並嘗試在Windows服務中使用它。 讀者搜索功能:C# - 帶參數的Windows服務EventMonitor函數
private void CheckPresentReaders()
{
using (var context = new SCardContext())
{
context.Establish(SCardScope.System);
PresentCardReaders = context.GetReaders();
}
}
智能卡刪除功能:
private void SCardRemoved(object sender, CardStatusEventArgs e)
{
WriteToLog("Locking machine. SmartCard was removed.");
// LockWorkStation();
}
監視器創作:
CheckPresentReaders();
if (PresentCardReaders.Length != 0)
{
SCardMonitor monitor = new SCardMonitor(ContextFactory.Instance, SCardScope.System);
monitor.CardRemoved += new CardRemovedEvent(SCardRemoved);
foreach (string reader in PresentCardReaders)
monitor.Start(reader);
}
WriteToLog功能是一種簡單的日誌記錄生成功能。
編譯時 - 服務啓動,然後立即停止。 我有兩個嫌疑 - 沒有下放WriteToLog和/或SCardRemoved,這需要兩個參數 -
(對象發件人,CardStatusEventArgs E) 那些由庫所需。
這是一個問題嗎?還有其他建議嗎? 謝謝。
你檢查http://stackoverflow.com/questions/26233593/pcsc-invalidcontextexception-when-running-as-a-windows-service和https://blogs.msdn.microsoft.com/alejacma/2011/05/19/scardestablishcontext-fails-with-scard_e_no_service-error/already?它拋出了什麼樣的異常?如果崩潰,事件日誌應該包含stacktrace +異常消息。 –