Hier geht es um die ReSharper-Warnung "Zugang zu entsorgtem Verschluss", die üblicherweise dann auftritt, wenn ein später entsorgtes Objekt in einem Lambda verwendet wird. Access to disposed closure in C#? diskutiert dies in ein bisschen mehr Detail.Zugang zu entsorgtem Verschluss - Methoden als sicher markieren
Meine Frage ist: Für Methoden, die solche lamdbas nehmen und führen sie sofort (so dass Sie sicher sein können, sie immer dann ausgeführt werden, bevor der das Objekt angeordnet ist):
Gibt es eine Möglichkeit, sie als sicher zu markieren, dass jeder Code, der diese Methode verwendet, diese Warnungen nicht mehr erzeugt?
Beispiel:
using (var myObject = new MyDisposableObject())
{
DoThisTwice(() => myObject.DoSomething());
}
...
void DoThisTwice(Action do)
{
do();
do();
}
DoThisTwice einen Delegierten dauert (oder eine Lambda) und führt sie synchron. Zu dem Zeitpunkt, zu dem die Methode zurückkehrt, wird das Lambda nicht mehr ausgeführt. Erst dann ist die myObject
entsorgt, also sind wir gut zu gehen. Wir könnten die Zeile, die DoThisTwice
aufruft, mit einem Kommentar markieren, aber das muss an allen Stellen mit der Methode in ähnlicher Weise geschehen. Stattdessen möchte ich DoThisTwice
als sicher markieren, damit Resharper keine Warnungen für Anrufer der Methode anzeigt.
* Genau * was ich gesucht habe! – chiccodoro
Wow, sehr nett :) –