Нет асинхронной пустоты (почти) всегда плохо (с. это ).
Как заявил Стивен в своей статье и своем ответе здесь, есть несколько причин иметь асинхронные void-методы (а именно асинхронные обработчики событий, которые никогда не имеют никакого другого «возвращаемого» значения, кроме void). Причины, по которым вам следует перейти на асинхронную задачу, и почему они лучше, объясняет Стивен в своем ответе.
Вот почему я бы предложил, чтобы ваш метод выглядел так:
private async Task RemoveLately(int id)
{
await Task.Delay(10000).ConfigureAwait(false);
_states.TryRemove(id, out _);
}
В качестве небольшого замечания (если можно): Если вы не знаете, что выбрать и / или можете выбрать Task
(или Task<T>
) или async void
, попробуйте использовать Task
, потому что почти в каждом случае (кроме обработки событий) вам лучше с Task
, чем с async void
.