SYSLIB0006: Thread.Abort tidak didukung
API berikut ditandai sebagai kedaluwarsa, dimulai dari .NET 5. Penggunaan API ini menghasilkan peringatan SYSLIB0006
pada waktu kompilasi dan PlatformNotSupportedException pada runtime.
Saat Anda memanggil Thread.Abort untuk membatalkan utas selain utas saat ini, Anda tidak tahu kode apa yang telah dijalankan atau gagal dijalankan saat ThreadAbortException ditampilkan. Anda juga tidak dapat memastikan status aplikasi Anda atau aplikasi dan status pengguna apa pun yang bertanggung jawab untuk menjaganya. Misalnya, memanggil Thread.Abort dapat mencegah eksekusi konstruktor statis atau rilis sumber daya terkelola atau tidak terkelola. Karena alasan ini, Thread.Abort selalu menampilkan PlatformNotSupportedException pada .NET Core dan .NET 5+.
Penyelesaian masalah
Gunakan CancellationToken untuk membatalkan pemrosesan unit kerja, bukan memanggil Thread.Abort. Contoh berikut mengilustrasikan penggunaan 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);
}
}
Menyembunyikan peringatan
Jika Anda harus menggunakan API usang, Anda dapat menekan peringatan dalam kode atau dalam file proyek Anda.
Untuk menekan hanya satu pelanggaran, tambahkan direktif praprosedur ke file sumber Anda untuk menonaktifkan lalu mengaktifkan kembali peringatan.
// Disable the warning.
#pragma warning disable SYSLIB0006
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0006
Untuk menekan semua SYSLIB0006
peringatan dalam proyek Anda, tambahkan <NoWarn>
properti ke file proyek Anda.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0006</NoWarn>
</PropertyGroup>
</Project>
Untuk informasi selengkapnya, lihat Menyembunyikan peringatan.