2017-05-11 15 views
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) 那些由庫所需。

這是一個問題嗎?還有其他建議嗎? 謝謝。

+0

你檢查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 +異常消息。 –

回答