1

バックグラウンドで C# アプリケーションを実行しています。システムがロックされているときに、このアプリケーションを停止したいと考えています。どうやってやるの。これに関するヘルプは本当に感謝しています。

解決策をありがとうHougen。このイベント「Microsoft.Win32.SystemEvents.SessionSwitch」を処理する Dll を含める必要があることを教えてください。そして、このコードが存在するレイヤー。ビジネス層にあると思います。これに関する任意の提案はありますか?

4

1 に答える 1

9

簡単。のイベントハンドラーを作成します

Microsoft.Win32.SystemEvents.SessionSwitch

イベント。SessionSwitchEventArgs.Reasonその中で、値のプロパティを確認しますSessionSwitchReason.SessionLock

シャム:すぐに戻ってこないのでごめんなさい。特別なDLLを含める必要はありません。クラスはSystemEventsシステムアセンブリにあります。このハンドラーがビジネスレイヤーに属しているかどうか(サービスクラスを含むプロジェクトに属していると思います)は、WindowsServiceから継承したものです。

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

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