1

タイマー ティックで、新しい ClearCase ApplicationClass オブジェクトを割り当てています。次のコードは大丈夫ですか? または、メモリを解放する必要がありますか? はいの場合、どのように? ccauto.dll の ClearCase Interop を使用しています。ccauto.dll はアンマネージ コードだと思います。混乱しています。メモリを解放する必要がありますか?

お知らせ下さい。

    private void timer1_Tick(object sender, EventArgs e)
    {
        try
        {
            IClearCase ccNew = new ApplicationClass();
            CCVOB vob = ccNew.get_VOB(ClearCaseVOB);
            ccNew = null;
        }
        catch
        {
        }
    }
4

1 に答える 1

0

2 コメント:

ClearCase.Application オブジェクトをプログラムで "GET" したら、CAL でオブジェクトを取得し続ける必要がありますか?
オブジェクトが取得されると、ClearCase.Application再度作成することなく、他のオブジェクトを取得するために使用できます。
CAL は、CAL オブジェクトが基礎となる ClearCase データとの同期を維持し、プロパティとメソッドを呼び出すときに必要に応じて更新することをできる限り保証します。
ただし、参照が CAL オブジェクトによって保持されている間に基になる ClearCase データを誰かが削除すると、CAL オブジェクトが無効になる可能性があります。

意味:CCVOBインスタンスを一度だけ設定することができます (Vob が消えると思わない限り... これは非常にまれなイベントです!)

  • C# では、usingブロックにコードを配置すると、制御がブロックを離れるとすぐにオブジェクトが破棄されます (必ずしも収集されるとは限りません)。

実装されているかどうかはわかりませんが、CCVOB実装されている場合Disposable、明示的に null に設定すると、適切に破棄されなくなります。
だから私はお勧めしませんccNew = null;

于 2009-08-11T08:01:22.803 に答える