2009-08-11 2 views
1

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

Просьба сообщить.

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

ответ

0

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

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

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

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

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