Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
API Thread.Abort sudah kedaluwarsa. Proyek yang menargetkan .NET 5 atau versi yang lebih baru akan mengalami peringatan waktu kompilasi SYSLIB0006 jika metode ini dipanggil.
Ubah deskripsi
Sebelumnya, panggilan untuk Thread.Abort tidak menghasilkan peringatan waktu kompilasi, namun, metode ini melemparkan PlatformNotSupportedException pada runtime.
Mulai dari .NET 5, Thread.Abort ditandai usang sebagai peringatan. Menggunakan metode ini menghasilkan peringatan kompilator SYSLIB0006. Implementasi metode tidak berubah, dan terus melemparkan PlatformNotSupportedException.
Alasan perubahan
Mengingat bahwa Thread.Abort selalu melemparkan PlatformNotSupportedException pada semua implementasi .NET kecuali .NET Framework, ObsoleteAttribute ditambahkan ke metode untuk menarik perhatian ke tempat-tempat di mana itu dipanggil.
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 dilemparkan. Anda juga tidak dapat memastikan status aplikasi Anda, atau setiap aplikasi dan status pengguna yang perlu dipertahankan. Misalnya, panggilan Thread.Abort dapat mencegah eksekusi konstruktor statis atau rilis sumber daya terkelola atau tidak terkelola. Untuk alasan ini, Thread.Abort selalu melempar PlatformNotSupportedException pada .NET Core dan .NET 5+.
Versi yang diperkenalkan
5.0
Tindakan yang direkomendasikan
CancellationToken Gunakan untuk membatalkan pemrosesan unit kerja alih-alih 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); } }Untuk informasi lebih lanjut, lihat Pembatalan pada thread yang dikelola.
Untuk menghilangkan peringatan saat kompilasi, hilangkan kode peringatan
SYSLIB0006. Peringatan ini khusus untuk Thread.Abort, dan menekan peringatan ini tidak akan menekan peringatan usang lainnya dalam kode Anda. Namun, kami sarankan Anda menghapus panggilan ke Thread.Abort alih-alih menekan peringatan.void MyMethod() { #pragma warning disable SYSLIB0006 Thread.CurrentThread.Abort(); #pragma warning restore SYSLIB0006 }Anda juga dapat mengabaikan peringatan dalam file proyek.
<PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net5.0</TargetFramework> <!-- Disable "Thread.Abort is obsolete" warnings for entire project. --> <NoWarn>$(NoWarn);SYSLIB0006</NoWarn> </PropertyGroup>