Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
versie geïntroduceerd: .NET 9
Taak wordt doorgegeven aan InvokeAsync zonder annuleringstoken
Geef een annuleringstoken op wanneer u een Task of ValueTask van InvokeAsyncretourneert, zodat de gedelegeerde correct kan worden afgewacht en uitzonderingen kunnen worden verwerkt.
U kunt deze fout negeren als u een taak zonder supervisie wilt uitvoeren.
Deze waarschuwing corrigeren
Gebruik functies die annuleringstokens als argument gebruiken. Hierdoor kan de gedelegeerde die aan InvokeAsync is doorgegeven worden afgewacht, zodat uitzonderingen correct worden verwerkt.
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();
}
De waarschuwing beheren
Onderdrukt de waarschuwing met een van de volgende methoden:
Stel de ernst van de regel in het bestand .editorConfig.
[*.{cs,vb}] dotnet_diagnostic.WFO2001.severity = noneZie Configuratiebestanden voor codeanalyseregelsvoor meer informatie over editorconfiguratiebestanden.
Voeg de volgende
PropertyGrouptoe aan uw projectbestand:<PropertyGroup> <NoWarn>$(NoWarn);WFO2001</NoWarn> </PropertyGroup>Onderdrukken in code met de
#pragma warning disable WFO2001richtlijn.
.NET Desktop feedback