Bagikan melalui


CA1840: Gunakan Environment.CurrentManagedThreadId bukan Thread.CurrentThread.ManagedThreadId

Properti Nilai
ID Aturan CA1840
Judul Gunakan Environment.CurrentManagedThreadId alih-alih Thread.CurrentThread.ManagedThreadId
Golongan Performa
Perbaikan bersifat disruptif atau non-disruptif Non-disruptif
Diaktifkan secara default di .NET 8 Sebagai saran

Penyebab

Menggunakan Thread.CurrentThread.ManagedThreadId untuk mendapatkan ID utas terkelola saat ini, bukan System.Environment.CurrentManagedThreadId.

Deskripsi aturan

System.Environment.CurrentManagedThreadId adalah penggantian pola Thread.CurrentThread.ManagedThreadId yang ringkas dan efisien.

Cara memperbaiki pelanggaran

Pelanggaran dapat diperbaiki secara manual, atau, dalam beberapa kasus, menggunakan Tindakan Cepat untuk memperbaiki kode di Visual Studio.

Dua cuplikan kode berikut menunjukkan pelanggaran aturan dan cara memperbaikinya:

using System.Threading;

class MyClass
{
    void MyMethod()
    {
        int id = Thread.CurrentThread.ManagedThreadId; // Violation occurs
    }
}
Imports System.Threading

Class MyClass
    Private Sub MyMethod()
        Dim id As Integer = Thread.CurrentThread.ManagedThreadId ' Violation occurs.
    End Function
End Class
using System.Threading;

class MyClass
{
    void MyMethod()
    {
        int id = System.Environment.CurrentManagedThreadId; // Violation fixed
    }
}
Imports System.Threading

Class MyClass
    Private Sub MyMethod()
        Dim id As Integer = System.Environment.CurrentManagedThreadId ' Violation fixed.
    End Function
End Class

Tip

Perbaikan kode tersedia untuk aturan ini di Visual Studio. Untuk menggunakannya, posisikan kursor pada pelanggaran dan tekan Ctrl+. (titik). Pilih Gunakan 'Environment.CurrentManagedThreadId' dari daftar opsi yang disajikan.

Code fix for CA1840 - Use 'Environment.CurrentManagedThreadId'

Kapan harus menekan peringatan

Aman untuk menyembunyikan pelanggaran aturan ini jika Anda tidak khawatir tentang dampak performa dari menggunakan Thread.CurrentThread.ManagedThreadId.

Menyembunyikan peringatan

Jika Anda hanya ingin menyembunyikan satu pelanggaran, tambahkan arahan praprosedur ke file sumber Anda untuk dinonaktifkan lalu aktifkan kembali aturannya.

#pragma warning disable CA1840
// The code that's violating the rule is on this line.
#pragma warning restore CA1840

Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none dalam file konfigurasi.

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

Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.

Baca juga