Очистка ресурсов - PullRequest
       5

Очистка ресурсов

1 голос
/ 07 декабря 2010

Я пытаюсь очистить ресурсы в моем коде C #.

Вот код:

finally
{
object[] myarray = new object[5] { globalRelation, asset, surfaceRelationNew, termStructureSlice,   equipRelation };

CleanupResource(myarray);
}


private void CleanupResource(params object[] objs)
{
          for (int count = 0; count < objs.Length; count++)
                {
                    if (objs[count] != null)
                    {
                        Marshal.ReleaseComObject(objs[count]);
                    }

                }
}

Это хороший подход? Или я должен вызывать метод CleanupResource () для каждого объекта, а не передавать массив и затем циклически проходить по нему.

Пожалуйста, предложите.

1 Ответ

2 голосов
/ 07 декабря 2010

это неуправляемый ресурс?

globalRelation, asset, surfaceRelationNew, termStructureSlice,   equipRelation

если нет, то не нужно беспокоиться о том, чтобы CLR обрабатывал это

если это неуправляемые ресурсы, чем я бы сказал, ypu делают это правильно, но почему вы вызываете отдельный метод, просто отпустите в блоке finally

или

вы можете написать деструктор класса, если его можно освободить, когда объект вашего класса GCed, как показано ниже.

~MyClass()
{
   Marshal.ReleaseComObject(globalRelation);
    Marshal.ReleaseComObject(asset);
     Marshal.ReleaseComObject(surfaceRelationNew);
     Marshal.ReleaseComObject(termStructureSlice);
     Marshal.ReleaseComObject(equipRelation);
 }
...