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 服务中并且它确实有效。
我正在使用 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 服务中并且它确实有效。