IClearCase, использование IClearTool в C #, как мне управлять выделенной памятью - PullRequest
1 голос
/ 11 августа 2009

При отметке таймера я выделяю новый объект ClearCase ApplicationClass. Следующий код в порядке? Или мне нужно освободить память, если да, то как? Я использую ClearCase Interop для ccauto.dll, я считаю, что ccauto.dll - это неуправляемый код, я запутался, я должен освободить память или нет?

Пожалуйста, сообщите.

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

1 Ответ

0 голосов
/ 11 августа 2009

2 комментария:

После того, как вы "ПОЛУЧИТЕ" объект ClearCase.Application программным способом, вам нужно продолжать получать объект в CAL?
Как только объект ClearCase.Application получен, его можно использовать для получения других объектов. без необходимости создавать их снова.
CAL обеспечивает максимальную синхронизацию объектов CAL с базовыми данными ClearCase, обновляя их по мере необходимости при вызове свойств и методов.
Однако объекты CAL могут стать недопустимыми, если кто-то удалит базовые данные ClearCase, в то время как ссылка все еще удерживается объектом CAL.

Значение: вы можете установить экземпляр CCVOB раз и навсегда (если только вы не думаете, что Vob исчезнет ... что должно быть очень редким событием!)

  • В C # размещение кода в блоке гарантирует, что объекты удаляются (хотя и не обязательно собираются), как только элемент управления покидает блок.

Я не уверен, что CCVOB реализует Disposable, но если это так, то установка его в null явно помешает его правильной утилизации.
Поэтому я бы не рекомендовал ccNew = null;

...