Нет ничего плохого в блокировке в методе async
. Однако есть последствия.
Если вы заблокируете метод async void
, который вызывается событием пользовательского интерфейса, вы также заблокируете поток пользовательского интерфейса и сделаете свой пользовательский интерфейс невосприимчивым.
Когда вы заблокируете в async Task
method, или в любом Task
вы, конечно, заблокируете поток, который в настоящее время выполняет эту часть метода или эту задачу. Если вы запускаете одновременно несколько экземпляров этой задачи или если ваш метод выполняется одновременно (например, это метод службы, который вызывается многими клиентами), вы можете исчерпать пул потоков. Это может помешать запуску других задач или вызову вашей службы другими клиентами.
Если вы хотите избежать последнего случая, возможно, стоит запустить этот метод блокировки в долгосрочной задаче . Текущая реализация в. Net создаст отдельный поток для этой задачи, таким образом не блокируя поток из пула потоков.