バックグラウンドで C# アプリケーションを実行しています。システムがロックされているときに、このアプリケーションを停止したいと考えています。どうやってやるの。これに関するヘルプは本当に感謝しています。
解決策をありがとうHougen。このイベント「Microsoft.Win32.SystemEvents.SessionSwitch」を処理する Dll を含める必要があることを教えてください。そして、このコードが存在するレイヤー。ビジネス層にあると思います。これに関する任意の提案はありますか?
簡単。のイベントハンドラーを作成します
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
}
}