Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
| Eigentum | Wert |
|---|---|
| Regel-ID | CA2025 |
| Titel | Übergeben Sie "IDisposable"-Instanzen nicht an nicht eingeawate Aufgaben. |
| Kategorie | Zuverlässigkeit |
| Fix ist unterbrechend oder nicht durchbrechend | Untrennbar |
| Standardmäßig in .NET 10 aktiviert | Nein |
Ursache
Eine IDisposable Instanz wird an eine nicht geöffnete Aufgabe übergeben und potenziell verworfen, bevor die Aufgabe mit der Instanz fertig gestellt wird.
Regelbeschreibung
Nicht abgerufene Aufgaben, die Instanzen verwenden IDisposable , verwenden diese Instanzen möglicherweise lange, nachdem sie verworfen wurden. Stellen Sie sicher, dass Aufgaben, die diese Instanzen verwenden, abgeschlossen werden, bevor die Instanzen verworfen werden.
Beispiele
Die folgenden Codeausschnitte (und ihre Visual Basic-Entsprechungen) sind Verstöße gegen CA2025:
public Task DoSomethingAsync()
{
// Using statements and using blocks can both be violations.
using (var disposable = new DisposableThing())
{
return DoSomethingInternalAsync(disposable);
}
}
public async Task DoThingsAsync()
{
var disposable = new DisposableThing();
var task = DoSomethingInternalAsync(disposable);
// More code here.
dispose.Dispose();
// It's a violation if arguments are disposed before the task is awaited.
await task.ConfigureAwait(false);
}
Wann sollten Warnungen unterdrückt werden?
Unterdrücken Sie diese Warnungen, wenn Sie wissen, dass Aufgaben die Verwendung von IDisposable Instanzen abgeschlossen haben, bevor sie verworfen werden.
Unterdrücken einer Warnung
Um nur eine einzelne Verletzung zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Regel zu deaktivieren und dann wieder zu aktivieren.
#pragma warning disable CA2025
// The code that's violating the rule is on this line.
#pragma warning restore CA2025
Um die Regel für eine Datei, einen Ordner oder ein Projekt zu deaktivieren, setzen Sie dessen Schweregrad auf none in der Konfigurationsdatei fest.
[*.{cs,vb}]
dotnet_diagnostic.CA2025.severity = none
Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.