Bagikan melalui


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.

Lihat juga