CA2008: TaskScheduler geçirmeden görev oluşturmayın

Özellik Değer
Kural Kimliği CA2008
Başlık TaskScheduler geçirmeden görev oluşturmayın
Kategori Güvenilirlik
Hataya neden olan veya bozulmayan düzeltme Hataya neden olmayan
.NET 8'de varsayılan olarak etkin Hayır

Neden

Görev oluşturma veya devam etme işlemi, parametre belirtmeyen TaskScheduler bir yöntem aşırı yüklemesi kullanır.

Kural açıklaması

Aşağıdaki .NET görev oluşturma ve devamlılık yöntemleri, bir TaskScheduler örneğin belirtilmesine veya atılmasına izin veren aşırı yüklemelere sahiptir:

Davranışı çağıran tarafından tanımlanan ve çalışma zamanında farklılık gösterebilen varsayılan Current değerden kaçınmak için her zaman açık TaskScheduler bir bağımsız değişken belirtin. Current , o iş parçacığında çalışmakta olan öğeyle Task ilişkilendirilmiş zamanlayıcıyı döndürür. Böyle bir görev yoksa, iş parçacığı havuzunu temsil eden değerini döndürür Default. kullanmak Current , iş parçacığı havuzunda görevi oluşturmak için tasarlandığı ancak bunun yerine kullanıcı arabirimi iş parçacığına geri dönmek için beklediği bazı durumlarda kilitlenmelere veya kullanıcı arabirimi yanıt verme sorunlarına yol açabilir.

Daha fazla bilgi ve ayrıntılı örnekler için bkz . .NET Framework 4.5'te Yeni TaskCreationOptions ve TaskContinuationOptions.

Dekont

VSTHRD105 - TaskScheduler.Current öğesinin Microsoft.VisualStudio.Threading.Analyzers paketinde uygulanan benzer bir kural olduğunu varsayarken yöntem aşırı yüklemelerinden kaçının.

İhlalleri düzeltme

İhlalleri düzeltmek için, bir ve TaskScheduler açıkça geçen Default veya Current amacı net hale getiren yöntem aşırı yüklemesini çağırın.

Uyarıların ne zaman bastırılması gerekiyor?

Bu uyarı öncelikli olarak, kodun rastgele ortamlarda yürütülebileceği ve kodun ortam veya yöntemi çağıranın onu nasıl çağırdığı veya beklediği hakkında varsayımlarda bulunmaması gereken kitaplıklara yöneliktir. Kitaplık kodu yerine uygulama kodunu temsil eden projeler için uyarıyı göstermemek uygun olabilir.

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 CA2008
// The code that's violating the rule is on this line.
#pragma warning restore CA2008

Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, yapılandırma dosyasındaki önem derecesini noneolarak ayarlayın.

[*.{cs,vb}]
dotnet_diagnostic.CA2008.severity = none

Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.

Ayrıca bkz.