変数を定義し、変数にスペースを割り当て、変数を初期化し、すべてを適切にクリーンアップする場合の C# での優れたプログラミング方法についてアドバイスをお願いします。
私が現在直面している問題は、アンマネージ API 関数を使用する関数があり、その結果、アンマネージ メモリにもアクセスすることです (マーシャリングが使用されます)。関数をきれいにして、終了する前にすべてを適切に破棄したいと思います。ただし、実際の作業はすべてtry-catchブロック内で行われます。つまり、 catchまたはfinallyブロックですべてをクリーンアップすることはできません。
私が行ったことは、すべての変数を宣言し、それらのためにメモリを予約し、関数に入った直後にそれらを初期化し、最後にブロックですべてをクリーンアップ (ハンドルを閉じる、メモリを解放するなど) することです。
すべて問題ありませんが、 tryブロックで変数の宣言、初期化、およびメモリの割り当てを行いたいと思います(たとえば、配列を初期化するときや、メモリにスペースを割り当てるとき、または神がどこにあるかを知っているときにも問題が発生する可能性があります)。頭に浮かぶ唯一のことは、2 つのtry-catchブロックをネストすることです。これでよろしいですか、それとも別の提案をしていただけますか?
これが私がこれまでに持っているものです:
//Declare variables, allocate memory, initialize variables.
........
try
{
//Do actual work - write to file and read from a file in my case
.........
}
catch (Exception exc)
{
//Exception handler for file write/read errors
}
finally
{
//Clean up (release handles, free memory,...)
}
そして、ここに私が考えていることがあります:
try
{
//Declare variables, allocate memory, initialize variables.
........
try
{
//Do actual work - write to file and read from a file in my case
.........
}
catch (Exception exc)
{
//Exception handler for file write/read errors
}
}
catch (Exception exc_1)
{
//Exception handler for variable declaration, initialization, memory allocation errors
}
finally
{
//Clean up (release handles, free memory,...)
}
ご協力いただきありがとうございます。
乾杯!