CA2250: usar ThrowIfCancellationRequested

Property Valor
ID da regra CA2250
Título Use ThrowIfCancellationRequested.
Categoria Usage
Correção interruptiva ou sem interrupção Sem interrupção
Habilitado por padrão no .NET 8 Como sugestão

Causa

Essa regra sinaliza instruções condicionais que verificam IsCancellationRequested antes de gerar OperationCanceledException.

Descrição da regra

Você pode realizar a mesma coisa chamando CancellationToken.ThrowIfCancellationRequested().

Como corrigir violações

Para corrigir violações, substitua a instrução condicional por uma chamada para ThrowIfCancellationRequested().

using System;
using System.Threading;

public void MySlowMethod(CancellationToken token)
{
    // Violation
    if (token.IsCancellationRequested)
        throw new OperationCanceledException();

    // Fix
    token.ThrowIfCancellationRequested();

    // Violation
    if (token.IsCancellationRequested)
        throw new OperationCanceledException();
    else
        DoSomethingElse();

    // Fix
    token.ThrowIfCancellationRequested();
    DoSomethingElse();
}
Imports System
Imports System.Threading

Public Sub MySlowMethod(token As CancellationToken)

    ' Violation
    If token.IsCancellationRequested Then
        Throw New OperationCanceledException()
    End If

    ' Fix
    token.ThrowIfCancellationRequested()

    ' Violation
    If token.IsCancellationRequested Then
        Throw New OperationCanceledException()
    Else
        DoSomethingElse()
    End If

    ' Fix
    token.ThrowIfCancellationRequested()
    DoSomethingElse()
End Sub

Quando suprimir avisos

É seguro suprimir avisos dessa regra.

Suprimir um aviso

Para suprimir apenas uma violação, adicione diretivas de pré-processador ao arquivo de origem a fim de desabilitar e, em seguida, reabilitar a regra.

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

Para desabilitar a regra em um arquivo, uma pasta ou um projeto, defina a severidade como none no arquivo de configuração.

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

Para obter mais informações, confira Como suprimir avisos de análise de código.

Confira também