0

WPF特定のイベントが発生したときにアプリケーションをアイドル状態にするにはどうすればよいですか?

void SystemEvents_SessionSwitch(object sender, Microsoft.Win32.SessionSwitchEventArgs e)
    {
        if (e.Reason == SessionSwitchReason.SessionLock) {
            //make application idle
        }
        else if (e.Reason == SessionSwitchReason.SessionUnlock) {
            //run the app again
        }
    }

私はこのようなコードを持っています。ユーザーが Windows をロックしたとき、条件が発生した場合、ロックを解除したときにそれ以外の場合は発生します。

アプリをアイドル状態にして再度実行するためのコードを提案してもらえますか?

4

1 に答える 1

0

Windows では、アプリケーションを「アイドル」にすることはできません。Thread.Suspendメソッドを使用してアプリケーション スレッドを一時停止できますが、アプリケーションが他のスレッドを再開するには、少なくとも 1 つのスレッド (メイン スレッド) が実行されている必要があります。

ただし、スレッドの中断と再開はお勧めできません。アプリケーションが実行しているタスクをインテリジェントに一時停止および再開することは、はるかに優れたソリューションです。たとえば、アプリケーションがビデオを再生している場合、ビデオ コントロールを一時停止し、必要なときにビデオを再開するための明確な方法を見つける必要があります。スレッドを一時停止および再開すると、予期しない動作が発生し、ユーザー エクスペリエンスが低下する可能性があります。

于 2012-06-06T11:49:33.927 に答える