Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Versão introduzida: .NET 9
A tarefa está sendo passada para InvokeAsync sem um token de cancelamento
Forneça um token de cancelamento ao retornar um Task ou ValueTask de InvokeAsync, o que garante que o delegado possa ser aguardado corretamente e as exceções possam ser tratadas.
Você poderá ignorar esse erro se sua intenção for executar uma tarefa não supervisionada.
Para corrigir este aviso
Utilize funções que recebem tokens de cancelamento como argumento. Isso permitirá que o delegado transmitido para InvokeAsync seja aguardado, garantindo que as exceções sejam tratadas corretamente.
CancellationTokenSource _stopWatchTokenSource = new();
CancellationToken _stopWatchToken;
private async void btnStopWatch_Click(object sender, EventArgs e)
{
if (_stopWatchToken.CanBeCanceled)
{
btnStopWatch.Text = "Start";
_stopWatchTokenSource.Cancel();
_stopWatchTokenSource.Dispose();
_stopWatchTokenSource = new CancellationTokenSource();
_stopWatchToken = CancellationToken.None;
return;
}
_stopWatchToken = _stopWatchTokenSource.Token;
btnStopWatch.Text = "Stop";
await Task.Run(async () =>
{
while (true)
{
try
{
await this.InvokeAsync(UpdateUiAsync, _stopWatchToken);
}
catch (TaskCanceledException)
{
break;
}
}
});
}
// The actual UI update method
async ValueTask UpdateUiAsync(CancellationToken cancellation)
{
lblStopWatch.Text = $"{DateTime.Now:HH:mm:ss - fff}";
await Task.Delay(20, cancellation);
}
// Make sure that the token is cancelled when the form is closed
protected override void OnFormClosing(FormClosingEventArgs e)
{
base.OnFormClosing(e);
_stopWatchTokenSource.Cancel();
}
Gerenciar o aviso
Suprime o aviso com qualquer um dos seguintes métodos:
Defina a gravidade da regra no arquivo .editorConfig .
[*.{cs,vb}] dotnet_diagnostic.WFO2001.severity = nonePara obter mais informações sobre arquivos de configuração do editor, consulte Arquivos de configuração para regras de análise de código.
Adicione o seguinte
PropertyGroupao arquivo de projeto:<PropertyGroup> <NoWarn>$(NoWarn);WFO2001</NoWarn> </PropertyGroup>Suprimir no código com a diretiva
#pragma warning disable WFO2001.
.NET Desktop feedback