7

このクラスについての私の理解では、クラスのファイナライザー (デストラクタ) が呼び出されることを確認したいときに使用する必要がありますが、私が行ったいくつかのテストから、そうではないようです。dispose メソッドが呼び出されていることを確認できない場合、他の方法はありますか? たとえば、タスク マネージャーなどでプログラムを閉じても、オブジェクトを終了するために何らかのコードが実行されるようにしたい場合はどうすればよいでしょうか?

4

4 に答える 4

3

プログラムが Ctrl+Alt+Del されたときにコードを実行する必要がある場合は、最初の状態を監視する別のプログラムを用意する以外に方法はないと思いますそれほど多くのアーキテクチャが本当に必要な場合は、サービスといくつかのクライアント アプリ、またはペアまたはサービスを使用する必要があると思います。

ただし、これは、アプリケーション イベントを既に調べていることを前提としています。まだお持ちでない場合は、こちらの概要をご覧ください。

EDITその概要よりも優れているのは、おそらくApplicationExit イベントです。

于 2009-07-21T03:43:53.620 に答える
3

私が行ったいくつかのテストから、それは真実ではないようです。

.Net のファイナライザーは非決定論的です。 つまり、ファイナライザーが呼び出される正確なタイミングは保証されませ。オブジェクトがスコープ外になった、または破棄されたからといって、ファイナライザーがすぐに呼び出されるわけではありません。ガベージ コレクターは、将来の不明な時点でそれに対処します。

于 2009-07-21T03:12:02.997 に答える