SYSLIB0006: Thread.Abort desteklenmiyor
Aşağıdaki API'ler .NET 5'te başlayarak kullanım dışı olarak işaretlenir. Bu API'lerin kullanılması derleme zamanında ve PlatformNotSupportedException çalışma zamanında uyarı SYSLIB0006
oluşturur.
Geçerli iş parçacığı dışında bir iş parçacığını durdurmak için çağırdığınızda Thread.Abort , hangi kodun yürütüldiğini veya ne zaman ThreadAbortException yürütülediğini bilmezsiniz. Ayrıca uygulamanızın durumundan veya korumadan sorumlu olduğu herhangi bir uygulama ve kullanıcı durumundan da emin olamazsınız. Örneğin, çağrı statik Thread.Abort oluşturucuların yürütülmesini veya yönetilen veya yönetilmeyen kaynakların yayınlanmasını engelleyebilir. Bu nedenle her Thread.Abort zaman .NET Core ve .NET 5+ üzerinde bir PlatformNotSupportedException oluşturur.
Geçici Çözümler
bir iş biriminin işlenmesini çağırmak Thread.Abortyerine durdurmak için kullanınCancellationToken. Aşağıdaki örnekte kullanımı gösterilmektedir CancellationToken.
void ProcessPendingWorkItemsNew(CancellationToken cancellationToken)
{
if (QueryIsMoreWorkPending())
{
// If the CancellationToken is marked as "needs to cancel",
// this will throw the appropriate exception.
cancellationToken.ThrowIfCancellationRequested();
WorkItem work = DequeueWorkItem();
ProcessWorkItem(work);
}
}
Uyarıyı gizleme
Eski API'leri kullanmanız gerekiyorsa, uyarıyı kodda veya proje dosyanızda gizleyebilirsiniz.
Yalnızca tek bir ihlali engellemek için, önişlemci yönergelerini kaynak dosyanıza ekleyerek uyarıyı devre dışı bırakın ve sonra yeniden etkinleştirin.
// Disable the warning.
#pragma warning disable SYSLIB0006
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0006
Projenizdeki tüm SYSLIB0006
uyarıları engellemek için proje dosyanıza bir <NoWarn>
özellik ekleyin.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0006</NoWarn>
</PropertyGroup>
</Project>
Daha fazla bilgi için bkz . Uyarıları gizleme.