🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

1回答

9023閲覧

WPF で、Windowを完全に閉じる方法

FacePanel

総合スコア48

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

0クリップ

投稿2019/11/24 03:29

超初心者です。
今回、WPFアプリのWindowが閉じ切らない問題になりました。
下記の通りです。

WPF でWindowを開いたあとで、this.Close();
で閉じる、というのが一般的な方法かと思います。
今回、MainWindowの他に、3つのWindowがあります。
このMainWindowから、3つのボタンを選択してクリックすることで、
それぞれ、Window1, Window2, Window3を開き、そのときに、
MainWindowを閉じる設定をしました。

で、Window1, Window2を閉じるときには、プログラムが閉じるのに、
Window3を閉じるときには、プログラムが閉じません。
VisualStudio2019のデバッグ時の青い緑色の矢印が赤い四角になったままです。

全体のコードをお見せできれば、手っ取り早いと思いますが、大きすぎて
できません。最初から、Window3を閉じたときにできなくなっただけでなく、
コードを追加して、いつもの間にやらこうなったようです。

今回の質問は、このような場合に、どのような方法で、原因を突き止めて
それを修正したらよいのか教えていただきたいのです。

1.原因となるものがなくなるまで、一つ一つ、地道にコードを削る方法。
2.コードを一つ一つ、積み上げてその都度、閉じてみて、原因を見つける方法。
3.起こりがちなことから、確かめる方法。

などが、あると思いますが、今回は、2について、何か手がかりがございましたら。
ぜひお伺いしたいと思います。

情報が定まらず申し訳ありませんが、どうぞよろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2019/11/24 03:36

開くのと閉じるのに限定しているので、削る作業もそれほどの手間にはならないんじゃないかと思います。可能性は山ほど考えられるので、こちらで考えるのは無理です。
FacePanel

2019/11/24 03:39

そうですか。残念ながら、確かにおっしゃる通りですよね。
pepperleaf

2019/11/24 03:40

Window3は閉じるけど、元のMainWindowが閉じないという事でしょうか? 中で別のプロセス/タスクを起動しているのでしょうか? それが、外部I/O待ちとかあるでしようか? その辺からと思いますが、どうでしょう。
FacePanel

2019/11/24 03:44

Window3が開く段階で、MainWindowは閉じています。 つまり、おっしゃるように、Window3が開く段階で、何かが始まってしまって、終わらない状況と思います。
FacePanel

2019/11/24 04:07

下記のように、開くときの操作をしないようにしてもダメでした。その他は、Window1もWindow2も同じことをしているだけですが。 public Window3() { InitializeComponent(); //OnStarting(); } private void OnStarting() { // ... }
Zuishin

2019/11/24 04:08

MainWindow が閉じると普通はその時点でアプリが終了しますが、それはどうやって回避していますか?
FacePanel

2019/11/24 04:25

Window2 win2 = new Window2(); win2.Show(); this.Close(); といった具合です。これは、Window1から3まで同じです。
Zuishin

2019/11/24 04:33

MainWindow や Window3 のイベントを何かが捕まえていたり、プロパティが何かにバインドされていたりはありませんか? INotifyPropertyChanged を実装せず ReactiveProperty などを使っている時に解放されないことがあるようです。
FacePanel

2019/11/24 05:10

初心者ということもあり、ReactivePropertyを使うというレベルではありません。 また、Window3のShow()の際には、各コントロールの表示を開始用に整えたり、予め取得しておく値をSQLで取得すること程度です。ひとまず、見た限りでは、別のものとの関連はなさそう、F11キーで、もう一度詳細に調べてみます。なお、XAMLは、奥が深そうなので、コントロールの配置以外では使っていません。コードビハインドだよりのWindowsFormの様な利用方法です。
FacePanel

2019/11/24 06:21

そうかもしれません。ちょっと調査してみます。
guest

回答1

0

自己解決

実は、いろいろ試してみましたが、3つのWindowが相互に絡み合っているために、解決方法を探ることができないまま、時間が経過してしまいました。
このため、これ以上時間を費やす余裕がないと、バッサリあきらめ、
System.Windows.Application.Current.Shutdown();
で、済ますことにしました。
皆様、申し訳ありません。

投稿2019/12/16 13:23

FacePanel

総合スコア48

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問