İçeriğe geç

Async lambda (ARCH107)

Anahtar dotnet.async.async-lambda · Önem warning · Kategori async

async void imzasına dönüşen asenkron lambda’lar tehlikelidir; içlerindeki istisnalar yakalanamaz. Bunun yerine Task döndüren delegelere uygun hata yönetimi ekleyin.

timer.Elapsed += async (s, e) =>
{
await _repository.SaveAsync();
};
timer.Elapsed += async (s, e) =>
{
try
{
await _repository.SaveAsync();
}
catch (Exception ex)
{
_logger.LogError(ex, "Save failed");
}
};

Asenkron lambda gövdesini try/catch ile sarın veya Func<Task> delegesine geçin. Gerekirse kural proje/workspace bazında except/ignore ile bastırılabilir.