Что такое PreserveThreadContext () при вызове асинхронных функций в Kephas? - PullRequest
1 голос
/ 16 апреля 2019

Я заметил во всех примерах Kephas, что при вызове асинхронных методов в конце вызывается PreserveThreadContext().Что это делает?

Пример:

   var result = await dataContext.Query<Document>()
                                 .ToListAsync()
                                 .PreserveThreadContext();

Я знаю о ConfigureAwait(false), это что-то похожее?

1 Ответ

1 голос
/ 17 апреля 2019

В некотором смысле, да, это означает, что в серверной среде он также включает вызов ConfigureAwait(false). Но он также восстанавливает культуру, связанную с потоками (и культуру пользовательского интерфейса), после возврата из асинхронного вызова, так что строки могут быть локализованы согласованным образом. Это связано с тем, что по возвращении вы можете оказаться в другом потоке, где культура является настройкой по умолчанию, а не настроенной. Кроме того, вы можете добавить свое поведение для хранения / восстановления информации, связанной с другими потоками. Для этого проверьте класс https://github.com/kephas-software/kephas/blob/master/src/Kephas.Core/Application/PreserveCultureThreadContextAppLifecycleBehavior.cs,, который добавляет поведение сохранения культуры. Как правило, вы реализуете это в AppLifecycleBehavior, в методе BeforeAppInitializeAsync.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...