C# - Windows 带参数的服务 EventMonitor 函数

C# - Windows Service EventMonitor function with parameters

我正在使用 PCSC 库进行智能卡读卡器事件检测,并尝试在 Windows 服务中使用它。 读者搜索功能:

 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 and/or SCardRemoved,需要两个参数——

(object sender, CardStatusEventArgs e) Those are required by library.

这会是个问题吗?还有其他建议吗? 谢谢。

我已经将它正确地实施到 Topshelf 服务中并且它确实有效。

https://github.com/35359595/SmartCardMonitorService