Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
| Majątek | Wartość |
|---|---|
| Identyfikator reguły | CA2025 |
| Tytuł | Nie przekazuj wystąpień "IDisposable" do zadań niezapoznanych |
| Kategoria | Niezawodność |
| Poprawka jest przełomowa lub nieprzełomowa | Niełamiący |
| domyślnie włączone na platformie .NET 10 | Nie. |
Przyczyna
Wystąpienie IDisposable jest przekazywane do nienazwytowanego zadania i potencjalnie usuwane przed zakończeniem zadania przy użyciu wystąpienia.
Opis reguły
Zadania bez obsługi, które używają IDisposable wystąpień, mogą używać tych wystąpień długo po ich usunięciu. Upewnij się, że zadania korzystające z tych wystąpień są wykonane przed usunięciem wystąpień.
Przykłady
Następujące fragmenty kodu (i ich odpowiedniki języka Visual Basic) są naruszeniami 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);
}
Kiedy pomijać ostrzeżenia
Pomiń te ostrzeżenia, jeśli wiesz, że zadania zakończą korzystanie z IDisposable wystąpień przed ich usunięciem.
Pomijanie ostrzeżenia
Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.
#pragma warning disable CA2025
// The code that's violating the rule is on this line.
#pragma warning restore CA2025
Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.
[*.{cs,vb}]
dotnet_diagnostic.CA2025.severity = none
Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.