2010-12-07 8 views
1

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() 메서드를 호출해야합니다.

좋습니다.

+0

가비지 수집기를 신뢰하십시오. http://blogs.msdn.com/b/visualstudio/archive/2010/03/01/marshal-releasecomobject-considered-dangerous.aspx –

답변

2

은 관리되지 않는 리소스입니까?

globalRelation, asset, surfaceRelationNew, termStructureSlice, equipRelation 

아니, 다음 필요는하자의 CLR의 헨델에 대해 걱정하는 경우이

내가, ypu가 제대로 일을하지만, 왜 별도의 메소드를 호출하는 말을 단 마지막 블록에서 출시하는 것보다이 관리되지 않는 리소스 경우

또는

의 okie이 그것을 해제 할 경우 클래스 소멸자를 작성할 수

때 클래스 다음과 같은 GCed의 객체입니다.

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

예, 이들은 모두 관리되지 않는 리소스 [COM 개체]입니다. – user74042