は、だから私はプロンプトを引き起こしていたし、何が終わりのないプロセスを引き起こしていたものを考え出した。
プロンプトが他の3つの窓の私の開閉としなければならなかった。ここで私はApplication.Current.Shutdown()
からエラーを取得して停止するように変更するものですこのコードを変更しました:
private void settingsWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
updateSettings();
e.Cancel = true;
main.Show();
Hide();
}
private void settingsButton_MouseUp(object sender, RoutedEventArgs e)
{
settingsWindow settingsWindow = new settingsWindow(this);
if (!settingsWindow.settingsOpen)
{
settingsWindow.Show();
Hide();
}
}
01このコードに
:
private void settingsWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
updateSettings();
}
private void settingsButton_MouseUp(object sender, RoutedEventArgs e)
{
settingsWindow settingsWindow = new settingsWindow(this);
if (!settingsWindow.settingsOpen)
{
settingsWindow.ShowDialog();
}
}
私はそれが私が負荷に初期化されていたし、彼らのクロージングイベントを巡回して、他のウィンドウのインスタンスを通じて戻ったmain
を閉じたら。 main.Show()
になったら、既に閉じていたものを表示できませんでした。
これを実行した後、Loaded
イベントで追加のウィンドウを元々初期化していたため、追加のトレースバックが終了していないことがわかりました。ここに私が変えたものがあります。初期化がまだそこにいた、なぜ私もよく分からない
private void InventoryUpdater_Loaded(object sender, RoutedEventArgs e)
{
TimeSpan na = queueCustomTask();
Stop = true;
runManually.IsEnabled = true;
ssdRunManually.IsEnabled = true;
startAutoRun.IsEnabled = true;
}
:これに
private void InventoryUpdater_Loaded(object sender, RoutedEventArgs e)
{
settingsWindow settings = new settingsWindow(this);
sftpSettings severSettings = new sftpSettings(settings);
TimeSpan na = queueCustomTask();
Stop = true;
runManually.IsEnabled = true;
ssdRunManually.IsEnabled = true;
startAutoRun.IsEnabled = true;
}
:私はこれを変更しました。すべてが静的なグローバル変数に切り替えられていたので、それらの2行を削除すると何も影響を受けませんでした。すべてのショーを正しい方向に感謝します!
代わりに 'Environment.Exit(0)'? – user3185569
'Environment.Exit(0);'はプロセスを終了しません。これを試すと、アプリケーションウィンドウが閉じられるだけですが、プロセスは実行され続けてスタックされます。 – Hank
これは当てはまりません。ドキュメントの状態:*他のスレッドが実行中であっても、Exitによってアプリケーションが即座に終了する*:https://msdn.microsoft.com/en-us/library/system.environment.exit(v=vs.110).aspx – user3185569