Из вашего кода неясно, ожидается ли Task
или вы звоните .Result
или .GetAwaiter().GetResult()
на Task
. Однако, как мы выяснили в комментариях, добавление .ConfigureAwait(false)
исправило вашу проблему.
Это указывает на то, что код не может вернуться в контекст, из которого он получен, поэтому при добавлении .ConfigureAwait(false)
код не возвращается в контекст.
В вашем случае контекст, вероятно, является потоком пользовательского интерфейса, и при попытке возврата поток пользовательского интерфейса блокируется.
Наиболее вероятный сценарий, по которому поток пользовательского интерфейса является блочным, заключается в том, что вы неправильно назвали свою задачу. Если вы вызываете его с помощью .Result
в потоке пользовательского интерфейса, вы синхронно блокируете поток пользовательского интерфейса, поэтому все, что пытается вернуться в поток пользовательского интерфейса, блокируется, поскольку вы блокируете это.
Простое решение - просто добавить .ConfigureAwait(false)
в ваш код. Лучшим решением было бы не блокировать поток пользовательского интерфейса, ожидая Задачу.