- - PR -
アプリケーションが終了しない
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-09-11 10:00
あるシングルトンのクラスを作っていて、そのための簡単なテストフォームアプリケーションを書いたのですが、フォームを閉じてもアプリケーションが正常に終了してくれません。Main()でデバッガを走らせて見ると、最後の Application.Exit() まで実行するのですが、そのあとMain()ファンクションの最後のカッコまで行って、更にステップ実行すると現在の行を示すハイライトが消えてそのままになります。
毎回タスクマネージャに同じ名前のプロセスが増えていきます。タスクマネージャでたまったプロセスを消すのですが、なぜかマシンをブートしてから最初に作ったプロセスだけはタスクマネージャから消すことも出来ません(本当に消すのかの確認ダイアログが出て、「はい」を選択すると、ダイアログとプロセス名へのフォーカスは消えるがプロセスはそのまま)。 シングルトンクラスの中でDisposeもきちんと設定しているつもりです。Form の OnClose で Dispose も呼んでいます。なにかおかしいところがあるのでしょうか。 何か単純なところを見逃している気がします。どうぞよろしくお願いします。
| ||||
|
投稿日時: 2008-09-11 10:52
FileSystemWatcher を使用しているようですが、
FileSystemWatcher のイベントハンドラの処理が完了してなかったりしませんか? たぶん、FileSystemWatcher のイベントハンドラは非同期で実行されます。 それとたぶん無関係ですが、とりあえず気づいたことです ・ファイナライザから Dispose(false) を呼び出していない ・既に Dispose を呼び出したかどうかのフラグがない ・シングルトンの Dispose(bool disposing) メソッドがなぜか internal アンマネージドリソースの解放処理が含まれていないから ファイナライザで Dispose(false) を呼び出しても別に何もしないわけですが GC.SuppressFinalize(this) はなぜか呼び出してますね _________________ C#と諸々 |
1