私は広範な静的メンバーを持つクラスを持っていますが、そのうちのいくつかはマネージオブジェクトとアンマネージドオブジェクトへの参照を保持します。C#静的メンバーはいつ、どのように処理されますか?
例えば、タイプが参照されるとすぐに静的コンストラクタが呼び出され、これにより、クラスがTasksのblockingQueueを回転させます。これは、たとえば静的メソッドの1つが呼び出されたときに発生します。
私はIDisposableを実装しました。これは、私が作成したインスタンスオブジェクトに対して処理を行うメソッドを提供します。ただし、コンシューマが自分のクラスからインスタンスオブジェクトを作成しない場合、これらのメソッドは呼び出されません。
私のクラスの静的部分によって保持されている参照を処分するコードをどのように配置するのですか?私はいつも、最後のインスタンスオブジェクトが解放されたときに静的参照されたリソースの廃棄が起こったと考えました。インスタンスを作成しないクラスを初めて作成したのはこれが初めてです。
静的項目は、アプリケーションの全体の実行のために利用可能です。 NEWキーワードを使用して静的な項目を作成するわけではありません。つまり、実際には何もインスタンス化しないため、何も複数のインスタンスを持たないということです。管理対象オブジェクトについては、それらについて心配する必要はありません.GCがそれらを処理します。アンマネージリソースについては、静的でないクラスでそれらを使用しようとするか、アプリケーションを閉じるまで保持されます。静的項目は処理をサポートしていません。 – alexandrudicu
ありがとうございます。私はここで私のデザインを再考する必要があるように見えます。 – Joe