Ktouth Brand. on Web

け〜くんこと K.Ktouth のだらだらした日常と突発的に作るプログラムや読み物とかの雑多サイト



[2013年07月17日]

NUnit + RequiresSTA + window.Show() で終了が遅い?

2013年07月18日 08:57更新 筆者:K.Ktouth

NUnit で 実際に WPF のウィンドウを開いて動作テストを書いているんですが、困ったことに「NUnit GUI を終了する際に固まって閉じるまで数分かかる」と言う現象に悩まされています。
最初は自分の書いたコードが原因かなとも思ったんですが、単純にほとんど素の TextBlock をコンテンツに持っている(Textプロパティすら定義していない) Window を Show() ないし ShowModal() すると、テストはグリーンというかテストすら書いていないシンプルなものでも、最後に NUnit GUI を閉じようとすると数分固まってしまうんです。 Show() や ShowModal() を実行さえしなければ問題なし。なにかのリソースの解放に手間取っている感じです。
頻繁に閉じる必要は無いのですが、ソースの微修正→再コンパイルを繰り返していると NUnit 側も リロード→直前のテストを再実行 を行うためコンパイルとリロードのタイミングでテストアセンブリを両方がロックしようとして、結果、両方がデッドロック状態になって終了すら出来なくなると言う始末。もちろん毎回起きるわけじゃ無いんですが……

きちんとリソースの解放処理をしたら良いのかなと Dispose() を呼ぼうとしたら IDisposable インターフェイスを実装してないし!(笑)
単純に GC.Collect() とか実行すればいいのかねぇ?

本日のリンク元
その他のリンク元
検索