Warum verwenden manche Leute die FinalizeMethode gegenüber der DisposeMethode? In welchen Situationen würden Sie die FinalizeMethode gegenüber der DisposeMethode verwenden und umgekehrt?
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?
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 möchte eine Aufgabe auslösen, die in einem Hintergrundthread ausgeführt wird. Ich möchte nicht auf die Fertigstellung der Aufgaben warten. In .net 3.5 hätte ich Folgendes getan: ThreadPool.QueueUserWorkItem(d => { DoSomething(); }); In .net 4 ist die TPL der vorgeschlagene Weg. Das übliche Muster, das ich empfohlen habe, ist: Task.Factory.StartNew(() …
Ich habe ein benutzerdefiniertes WPF-Benutzersteuerelement erstellt, das von Dritten verwendet werden soll. Mein Steuerelement hat ein privates Mitglied, das verfügbar ist, und ich möchte sicherstellen, dass seine Entsorgungsmethode immer aufgerufen wird, sobald das enthaltende Fenster / die enthaltende Anwendung geschlossen wird. UserControl ist jedoch nicht verfügbar. Ich habe versucht, die …
Mein Grundproblem ist, dass beim usingAufruf Disposevon a StreamWriterauch das BaseStream(gleiche Problem mit Close) beseitigt wird . Ich habe eine Problemumgehung dafür, aber wie Sie sehen können, muss der Stream kopiert werden. Gibt es eine Möglichkeit, dies zu tun, ohne den Stream zu kopieren? Der Zweck hierbei besteht darin, den …
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?
Wann würde ich IDispose in einer Klasse im Gegensatz zu einem Destruktor implementieren? Ich habe diesen Artikel gelesen , aber ich vermisse immer noch den Punkt. Ich gehe davon aus, dass ich IDispose, wenn ich es für ein Objekt implementiere, explizit "zerstören" kann, anstatt darauf zu warten, dass der Garbage …
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 studiere, wie Garbage Collector in c # funktioniert. Ich bin über die Verwendung von verwirrt Destructor, Disposeund FinalizeMethoden. Nach meinen Recherchen und Erkenntnissen weist eine Destructor-Methode in meiner Klasse den Garbage Collector an, die Garbage Collection auf die in der Destructor-Methode angegebene Weise durchzuführen, die für die Instanzen der …
Es ist mir kürzlich, dass Methoden verschiedene Linq Erweiterung hingewiesen (wie Where, Selectusw.) zurückgeben ein , IEnumerable<T>das auch passiert zu sein IDisposable. Das Folgende wird ausgewertetTrue new int[2] {0,1}.Select(x => x*2) is IDisposable Muss ich über die Ergebnisse eines WhereAusdrucks verfügen ? Wenn ich eine zurückkehrende Methode aufrufe IEnumerable<T>, übernehme …
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.