Асинхронный метод Xamarin на главной нити - PullRequest
0 голосов
/ 17 октября 2019

Всегда ли .ConfigureAwait(false) использует пул потоков, а не поток пользовательского интерфейса, или это просто подсказка?

Это вопрос, который меня беспокоил, и я не слышалокончательный ответ.

Так возможно, даже если вы блокируете .ConfigureAwait(false) основной поток пользовательского интерфейса и отлаживаете страшные

Пропущено 100 кадров !!

сообщение

1 Ответ

3 голосов
/ 22 октября 2019

Использование .ConfigureAwait(false) означает, что когда эта задача завершится, следующий код не будет маршалирован обратно в вызывающий поток, сохраняя маршалинг некоторого потока, который занимает время. Когда .ConfigureAwait(false) не вызывается, по умолчанию используется значение .ConfigureAwait(true), что означает «Когда эта задача выполнена, направьте следующий код обратно в поток, из которого была вызвана эта задача.

Как правило, каждый фрагменткод, который не находится в модели представления и / или который не нужно возвращать в основной поток, должен использовать ConfigureAwait false.

Это просто, легко и может улучшить производительность приложениянемного дольше освобождая поток пользовательского интерфейса.

Это не только вопрос или производительность, но и вопрос предотвращения потенциальных тупиков.

вы можете прочитать этот документ

...