Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Version présentée : .NET 9
La tâche est passée à InvokeAsync sans jeton d’annulation
Fournissez un jeton d'annulation lors du renvoi d'un Task ou d'un ValueTask depuis un InvokeAsync, ce qui garantit que le délégué peut être correctement attendu et que les exceptions peuvent être gérées.
Vous pouvez ignorer cette erreur si votre intention est d’exécuter une tâche non supervisée.
Pour corriger cet avertissement
Utilisez des fonctions qui acceptent des jetons d’annulation en tant qu’argument. Cela permet au délégué passé à InvokeAsync d'être mis en attente, en s'assurant que les exceptions sont gérées correctement.
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();
}
Gérer l’avertissement
Supprimez l’avertissement avec l’une des méthodes suivantes :
Définissez la gravité de la règle dans le fichier .editorConfig .
[*.{cs,vb}] dotnet_diagnostic.WFO2001.severity = nonePour plus d’informations sur les fichiers de configuration de l’éditeur, consultez Les fichiers de configuration pour les règles d’analyse du code.
Ajoutez les
PropertyGroupsuivantes à votre fichier projet :<PropertyGroup> <NoWarn>$(NoWarn);WFO2001</NoWarn> </PropertyGroup>Effectuez la suppression dans le code avec la directive
#pragma warning disable WFO2001.
.NET Desktop feedback