Das Szenario Ich habe, ist in der Execute-Methode eines SPJobDefinition ich durch jede SPSite in der Web-Anwendung zu gehen. So habe ich den folgenden Code:Sharepoint SPSite Entsorgung
foreach (SPSite site in this.WebApplication.Sites)
{
...
}
Frage ist, muss ich von jedem Standort entsorgen? Die Regel, die ich normalerweise beziehe, ist zu entsorgen oder in eine Anwendung zu stecken, nur wenn ich sie selbst neu erstelle. Wird die Sites-Eigenschaft zu Beginn tatsächlich vollständig erstellte Site-Objekte enthalten, auf die ich in diesem Code nur einen Verweis habe. Wenn das der Fall ist, wäre das Entsorgen der Websites gefährlich, da ich ein anderes Objekt modifiziere, das sie vielleicht haben möchte. Oder das Gegenteil ist, erstellt die Sites-Eigenschaft die Objekte auf Anfrage. In welchem Fall ist es meine Verantwortung, über sie zu verfügen?
plus, wie ich sie entsorgen, wenn ich das tun müssen, um tun. Ich kann eine Verwendung in diesem Fall nicht verwenden, und wird eine Aufzählung innerhalb der Foreach brechen die Aufzählung aufrufen?
Ich fragte sie die Aufzählung zu brechen, weil ich Probleme habe, wo etwas aus einer Liste löschen Ihre derzeit mit einer foreach Aufzählen über eine Ausnahme auslöst. Ich wusste nur nicht, ob das hier auch zutrifft. Wenn ich eine Kopie der Site innerhalb von WebApplication.Sites mache, die die Sammlung, die die Enumeration ausführt, unter –
nicht ändert, möchte ich diese Entsorgungslogik in eine AsSafeEnumerable() - Erweiterungsmethode einbetten: http://solutionizing.net/2009/01/05/linq-for-wspebcollection-revisited-assafeenumerable/ Diese Methode ist in SPExLib enthalten: http://spexlib.codeplex.com/ – dahlbyk