Detects improper usage of void return in an async method
Cette page n'est pas encore disponible en français, sa traduction est en cours.
Si vous avez des questions ou des retours sur notre projet de traduction actuel,
n'hésitez pas à nous contacter.
ID: csharp-best-practices/async-task-not-void
Language: C#
Severity: Error
Category: Best Practices
Description
According to the task asynchronous programming (TAP) model, async methods should only return void
if they are event handlers. Otherwise, they should return Task
or Task<TResult>
Non-Compliant Code Examples
class NonCompliant {
async void AsyncFetch() { /* ... */ }
async void Click() { /* ... */ }
async void HandleClick(object sender, EventArgs e, string notEventHandlerDelegateSignature) { /* ... */ }
}
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
namespace Gemini.Build.CodeGeneration
{
public class Logger : ILogger
{
public static ILogger Log { get; set; } = NullLogger.Instance;
void ILogger.Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception? exception, Func<TState, Exception?, string> formatter)
{
Log.Log(logLevel, eventId, state, exception, formatter);
}
public bool IsEnabled(LogLevel logLevel)
{
return Log.IsEnabled(logLevel);
}
public IDisposable BeginScope<TState>(TState state)
{
return Log.BeginScope(state);
}
}
}
Compliant Code Examples
class Compliant {
async Task AsyncFetch() { /* ... */ }
async void OnClick() { /* ... */ }
async void HandleClick(object sender, EventArgs e) { /* ... */ }
}