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 对象后,是否需要继续在 CAL 中获取该对象?
一旦ClearCase.Application获得了对象,就可以用它来获取其他对象,而无需再次创建它们。
CAL 尽可能确保 CAL 对象与底层 ClearCase 数据保持同步,并在调用属性和方法时根据需要进行刷新。
但是,如果有人在 CAL 对象仍持有引用时删除了底层 ClearCase 数据,则 CAL 对象可能会变得无效。

含义:您可以CCVOB一劳永逸地设置一个实例(除非您认为 Vob 会消失……这应该是非常罕见的事件!)

  • 在 C# 中,将代码放在 using中可确保在控制离开该块后立即释放(尽管不一定收集)对象。

我不确定是否为CCVOBimplements Disposable,但如果确实如此,将其显式设置为 null 会阻止它被正确处理。
所以我不推荐ccNew = null;

于 2009-08-11T08:01:22.803 回答