WPFアプリケーションの開発中に、非対話型の方法でアプリケーションの実行を停止しようとしました。このアプリケーションは、ユーザーがWindowsクラスターにジョブを送信する環境で使用され、誤ってUIコードを送信することがあります。これらのインスタンスは、誰かが自分の存在を認識してプロセスを強制終了するまで、サーバー上で実行されることになります。
複数の質問(#1、#2、#3Environment.UserInteractive
)の回答からのアドバイスに従って、非対話型の使用を停止するために使用して次のコードを実装しました。
private void Application_Startup (object sender, StartupEventArgs e)
{
if (Environment.UserInteractive)
{
var window = new MainWindow();
window.Show();
}
}
Windows 7タスクスケジューラを使用した簡単なテストでは、プロセスがアクティブなままであることがわかりました。ユーザーがログインしているかどうかに関係なくタスクが実行されるように設定されているため、ウィンドウがどこにも表示されず、Environment.UserInteractive
返されるかどうかわかりませんtrue
。
では、WPFアプリケーションが非対話的に実行されていることをどのように検出しますか?