1

我有一个 C# 应用程序在后台运行。现在我想在系统锁定时停止这个应用程序。我怎样才能做到这一点。非常感谢您对此的任何帮助。

感谢豪根的解决方案。您能否建议我是否应该包含任何 Dll 来处理“Microsoft.Win32.SystemEvents.SessionSwitch”这个事件?以及该代码应该驻留在哪一层。我猜它在业务层。对此有任何建议吗?

4

1 回答 1

9

简单的。为

Microsoft.Win32.SystemEvents.SessionSwitch

事件。在其中,检查SessionSwitchEventArgs.Reasonvalue 的属性SessionSwitchReason.SessionLock

Shyam:很抱歉没有马上回复你。您不必包含任何特殊的 DLL。该类SystemEvents位于 System 程序集中。这个处理程序是否属于业务层 - 我猜它属于包含您的服务类的任何项目 - 从 WindowsService 继承的那个。

public MyService()
{
    InitializeComponent();
    SystemEvents.SessionSwitch += SystemEvents_SessionSwitch;
}

void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e)
{
    if (_isRunning)
    {
        // Pause
    }
}
于 2009-09-21T10:55:20.443 回答