2

私は次のシングルスレッドのアパートを使用しています。スレッドオブジェクトからメモリ/その他のリソースを再利用できません。Actullayスレッドをtrycatchとfianllyblockでラップしたいと思います。試してキャッチが行われます。しかし、私は最終的にブロックすることについてはわかりません。finallyブロックで呼び出す必要のあるコード、プロパティ、または関数は何ですか。

System.Threading.Thread myThread = null;
    try 
    {
        myThread = new System.Threading.Thread(functionAddressETC)
        myThread .SetApartmentState(System.Threading.ApartmentState.STA);
        myThread .Start();
        myThread .Join();
    }
catch(Exception ex)
{}
finally
{
   // I need help in finally block. I need to reclaim all my resources
   //what function do i need to call here??????
}
4

1 に答える 1

1

GCはメモリを再利用し、ファイナライザーはネイティブリソースを解放します。これらのプロセスを確実に実行する唯一の方法は、不要になったオブジェクトが参照されていないことを確認することです。

スレッドには、スタック以外に独自のメモリ/リソースがありません。これは、Joinがスレッドをシャットダウンすることによってクリーンアップされます(ネイティブスレッドハンドルの複製に問題がある場合を除きます。この場合、最後のハンドルが閉じられます。 )。

于 2009-04-16T16:51:12.410 に答える