Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Mülkiyet | Değer |
---|---|
Kural Kimliği |
CA2025 |
Başlık | 'IDisposable' örnekleriniwaited görevlere geçirmeyin |
Kategori | Güvenilirlik |
Düzeltme kırılgan mı yoksa sağlam mı | Kırılmaz |
.NET 10'da varsayılan olarak etkindir | Hayı |
Nedeni
Örnek IDisposable
, örnek kullanılmadan bir göreve geçirilir ve görev örneği kullanılarak tamamlanmadan önce atılmış olabilir.
Kural açıklaması
Örnekleri kullanan IDisposable
örneksiz görevler, atıldıktan uzun süre sonra bu örnekleri kullanabilir. Nesneler atılmadan önce bu nesneleri kullanan görevlerin tamamlandığından emin olun.
Örnekler
Aşağıdaki kod parçacıkları (ve Visual Basic eşdeğerleri) CA2025 ihlalleridir:
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);
}
Uyarıların ne zaman bastırılması gerekiyor?
Görevlerin atılmadan önce örnekleri kullanmayı IDisposable
bitirdiğini biliyorsanız bu uyarıları gizleyebilirsiniz.
Uyarıyı gizleme
Yalnızca tek bir ihlali engellemek istiyorsanız, kuralı devre dışı bırakmak ve sonra yeniden etkinleştirmek için kaynak dosyanıza ön işlemci yönergeleri ekleyin.
#pragma warning disable CA2025
// The code that's violating the rule is on this line.
#pragma warning restore CA2025
Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için önem derecesini
[*.{cs,vb}]
dotnet_diagnostic.CA2025.severity = none
Daha fazla bilgi için bkz. Kod analizi uyarılarını gizleme.