我有一个 C# 应用程序在后台运行。现在我想在系统锁定时停止这个应用程序。我怎样才能做到这一点。非常感谢您对此的任何帮助。
感谢豪根的解决方案。您能否建议我是否应该包含任何 Dll 来处理“Microsoft.Win32.SystemEvents.SessionSwitch”这个事件?以及该代码应该驻留在哪一层。我猜它在业务层。对此有任何建议吗?
简单的。为
Microsoft.Win32.SystemEvents.SessionSwitch
事件。在其中,检查SessionSwitchEventArgs.Reason
value 的属性SessionSwitchReason.SessionLock
。
Shyam:很抱歉没有马上回复你。您不必包含任何特殊的 DLL。该类SystemEvents
位于 System 程序集中。这个处理程序是否属于业务层 - 我猜它属于包含您的服务类的任何项目 - 从 WindowsService 继承的那个。
public MyService()
{
InitializeComponent();
SystemEvents.SessionSwitch += SystemEvents_SessionSwitch;
}
void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e)
{
if (_isRunning)
{
// Pause
}
}