Hacker News new | ask | show | jobs
by kqr 1736 days ago
Given that you understand it well -- do you know why the compiler accepts async void in the first place?
2 comments

I think it made sense for UI integrations. From a synchronous OnClick delegate you could start an async void function - which essentially starts a background task that lives even after the click handler returns. Returning a Task here would not have made sense since nothing awaits it. But arguably the use-case could also have been fulfilled by calling `Task.Run` in the handler to spawn a background task.
Without knowing what the underlying method does, the async method may block the UI thread because until the first await which doesn't immediately continue it runs on the UI thread.
I think it was for backwards compatibility with event handlers (which need to return void)