Поделиться через


CA1840. Использование Environment.CurrentManagedThreadId вместо Thread.CurrentThread.ManagedThreadId

Свойство Значение
Идентификатор правила CA1840
Заголовок Используйте Environment.CurrentManagedThreadId вместо Thread.CurrentThread.ManagedThreadId
Категория Производительность
Исправление является критическим или не критическим Не критическое
Включен по умолчанию в .NET 8 Как предложение

Причина

Использование Thread.CurrentThread.ManagedThreadId для получения текущего идентификатора управляемого потока вместо System.Environment.CurrentManagedThreadId.

Описание правила

System.Environment.CurrentManagedThreadId — это компактная и эффективная замена шаблона Thread.CurrentThread.ManagedThreadId.

Устранение нарушений

Нарушение можно устранить вручную. В некоторых случаях для исправления кода в Visual Studio можно использовать быстрые действия.

В следующих двух фрагментах кода показано нарушение правила и способы его устранения:

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

Совет

Для этого правила в Visual Studio доступно исправление кода. Чтобы использовать его, поместите курсор на нарушение и нажмите клавиши CTRL+ (период). Выберите Использовать Environment.CurrentManagedThreadId в списке представленных вариантов.

Code fix for CA1840 - Use 'Environment.CurrentManagedThreadId'

Когда лучше отключить предупреждения

Можно безопасно подавить информирование о нарушении этого правила, если вас не беспокоит влияние на производительность при использовании Thread.CurrentThread.ManagedThreadId.

Отключение предупреждений

Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.

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

Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none в файле конфигурации.

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

Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.

См. также