0

手動でリソースを処理するネイティブ コードをラップしています。クライアントに責任を渡すことなく、C# ラッパーでこれを処理したいと考えています。これは可能ですか、または必然的に IDisposable を実装してクライアント コードに責任を引き継がなければなりませんか?

つまり、管理対象リソースを自動的に処理するクラスを作成することさえ可能ですか?

これらのリソースの決定論的な処理は問題ではなく、安全に解放されることだけが問題であると言ったらどうでしょう。GC がファイナライザーを介してリリースをスケジュールできることをうれしく思います。

4

1 に答える 1

1

これは、ファイナライザーが行うように設計されていることです。アンマネージ リソースを解放するために 1 つ記述します。オブジェクトがガベージ コレクションされた後、CLR は自動的にそれを呼び出します。IDisposable を実装して早期にリリースすることはできますが、必須ではありません。また、リソースの割り当てに影響がない場合はスキップできます。説明する種類は、COM オブジェクトの種類と一致します。その .NET ラッパーも IDisposable を実装していません。

これが問題にならないように、プログラムの基本的なリソースの使用状況に注意してください。使用されている実際のリソースについて十分でないかどうかを判断するのは難しい場合があります。

于 2013-01-22T19:35:32.523 に答える