2010-12-07 28 views
1

Je tente de nettoyer les ressources de mon code C#.Nettoyage des ressources

Voici le code:

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]); 
        } 

       } 
} 

Est-ce une bonne approche? Ou dois-je appeler CleanupResource() méthode pour chaque objet plutôt que de passer un tableau, puis en boucle à travers lui.

Veuillez nous suggérer.

+0

Faites confiance au garbage collector. http://blogs.msdn.com/b/visualstudio/archive/2010/03/01/marshal-releasecomobject-considered-dangerous.aspx –

Répondre

2

sont ces ressources non managées?

globalRelation, asset, surfaceRelationNew, termStructureSlice, equipRelation 

si non, pas besoin de vous soucier let CLR handel cette

si ces ressources non managées que je ne ypu dire le font correctement, mais pourquoi appellent méthode séparée vous, relâchez dans bloc finally

ou

vous pouvez écrire destructor de classe si son okie pour le libérer lorsque l'objet de votre classe GCed comme ci-dessous.

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

oui, ce sont toutes des ressources non managées [objets COM.] – user74042