子画面を閉じたとき、親画面で決まった処理を行いたい

子画面のClosedイベントにやりたい処理を登録したデリゲートを登録
でもよいんだけど、これだと毎回子画面追加(インスタンス)時にこのデリゲートも一緒に登録してあげないといけない。毎回。

なんかだるいなーおんなじ処理なのになーって思って
OwnedWindowsのChangedEventとかないのかなーとか調べたけど なさそう。。。


だから、自作イベントループ作ってOwnedWindowsの値監視して減少したら発火~なイベント用意。

private void CloseSubWindowEventloop()
        {
          
                int owNum = 1;

                while (true)
                {
                    this.Dispatcher.Invoke(new Action(() =>
                    {
                        if (owNum > this.OwnedWindows.Count)
                        {
                            this.RefreshListViewEventHandler();
                        }
                        owNum = this.OwnedWindows.Count;
                    }));
                    // SleepはDispatcher外に置くのがポイント。Dispatcher.Invokeが開きっぱなしだと、メインスレッドに戻れる隙ができず、GUIが固まる。
                    System.Threading.Thread.Sleep(300);
                }
      
        }

かなり簡潔にかけて気持ちいい!

。。。けど、こんな気軽にワーカースレッド使ってよいものなのだろうか。。。