IDisposable ist eine Schnittstelle innerhalb der Base Class Library (BCL) von Microsoft .NET Framework. Es soll eine generische, deterministische Methode zum Freigeben nicht verwalteter Ressourcen in .NET-Anwendungscode bereitstellen.
Ich weiß aus der Microsoft-Dokumentation, dass die "primäre" Verwendung der IDisposableSchnittstelle darin besteht, nicht verwaltete Ressourcen zu bereinigen. Für mich bedeutet "nicht verwaltet" Dinge wie Datenbankverbindungen, Sockets, Fensterhandles usw. Aber ich habe Code gesehen, in dem die Dispose()Methode implementiert ist, um verwaltete Ressourcen freizugeben , was mir überflüssig erscheint, da …
C # 2008 Ich arbeite jetzt schon eine Weile daran und bin immer noch verwirrt über die Verwendung von Finalize- und Dispose-Methoden im Code. Meine Fragen sind unten: Ich weiß, dass wir nur einen Finalizer benötigen, wenn wir nicht verwaltete Ressourcen entsorgen. Wenn jedoch verwaltete Ressourcen vorhanden sind, die nicht …
System.Net.Http.HttpClient und System.Net.Http.HttpClientHandler in .NET Framework 4.5 implementieren IDisposable (über System.Net.Http.HttpMessageInvoker ). In der usingAnweisungsdokumentation heißt es: Wenn Sie ein IDisposable-Objekt verwenden, sollten Sie es in der Regel in einer using-Anweisung deklarieren und instanziieren. Diese Antwort verwendet dieses Muster: var baseAddress = new Uri("http://example.com"); var cookieContainer = new CookieContainer(); using …
DataSet und DataTable implementieren beide IDisposable, daher sollte ich nach herkömmlichen Best Practices ihre Dispose () -Methoden aufrufen. Nach dem, was ich bisher gelesen habe, verfügen DataSet und DataTable jedoch nicht über nicht verwaltete Ressourcen, sodass Dispose () nicht viel bewirkt. Außerdem kann ich nicht einfach verwenden, using(DataSet myDataSet...)da DataSet …
Etwas wie: using (IDisposable disposable = GetSomeDisposable()) { //..... //...... return Stg(); } Ich glaube, es ist kein geeigneter Ort für eine Rückgabeerklärung, oder?
Ist es sicher, die usingAnweisung für ein (möglicherweise) Nullobjekt zu verwenden? Betrachten Sie das folgende Beispiel: class Test { IDisposable GetObject(string name) { // returns null if not found } void DoSomething() { using (IDisposable x = GetObject("invalid name")) { if (x != null) { // etc... } } } …
Klassen wie Stream, StreamReader, StreamWriterusw. Geräte - IDisposableSchnittstelle. Das heißt, wir können anrufenDispose() Methoden für Objekte dieser Klassen . Sie haben auch eine publicMethode namens aufgerufen Close(). Das verwirrt mich, was soll ich nennen, wenn ich mit Objekten fertig bin? Was ist, wenn ich beide anrufe? Mein aktueller Code lautet: …
Beginnen Sie mit diesen einfachen Klassen ... Angenommen, ich habe eine einfache Reihe solcher Klassen: class Bus { Driver busDriver = new Driver(); } class Driver { Shoe[] shoes = { new Shoe(), new Shoe() }; } class Shoe { Shoelace lace = new Shoelace(); } class Shoelace { bool …
Das .NET IDisposable-Muster impliziert , dass Ihr Finalizer Dispose explizit aufrufen muss, wenn Sie einen Finalizer schreiben und IDisposable implementieren. Dies ist logisch und das habe ich immer in den seltenen Situationen getan, in denen ein Finalizer erforderlich ist. Was passiert jedoch, wenn ich dies einfach mache: class Foo : …
Ich habe den folgenden Code using(MemoryStream ms = new MemoryStream()) { //code return 0; } Die dispose()Methode wird am Ende von usingAnweisungsklammern aufgerufen, }oder? Wird das Objekt ordnungsgemäß entsorgt, da ich returnvor dem Ende der usingAnweisung bin MemoryStream? was geschieht hier?
Gibt es eine Methode oder eine andere leichte Methode, um zu überprüfen, ob sich eine Referenz auf ein entsorgtes Objekt bezieht? PS - Dies ist nur eine Kuriosität (gut schlafen, nicht im Produktionscode). Ja, ich weiß, dass ich das ObjectDisposedExceptionbeim Versuch, auf ein Mitglied des Objekts zuzugreifen, abfangen kann .
Ich mache gerade eine große Umgestaltung / Geschwindigkeitsoptimierung einer meiner größeren MVC-Apps durch. Es wird seit einigen Monaten in der Produktion bereitgestellt, und es kam zu Zeitüberschreitungen, die auf Verbindungen im Verbindungspool warteten. Ich habe das Problem auf die Verbindungen zurückgeführt, die nicht ordnungsgemäß entsorgt wurden. Vor diesem Hintergrund habe …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.