1

我注意到在所有 Kephas 示例中,当调用异步方法时,最后会调用PreserveThreadContext(). 这是做什么的?

一些例子:

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

我知道ConfigureAwait(false),这是类似的东西吗?

4

1 回答 1

1

在某种程度上,是的,这意味着在服务器环境中它还包括对ConfigureAwait(false). 但它也会在从异步调用返回时恢复线程绑定文化(和 UI 文化),以便可以以一致的方式本地化字符串。这是因为您在返回时可能会发现自己在另一个线程中,其中文化是默认的,而不是配置的。此外,您可以添加自己的行为来存储/恢复其他线程绑定信息。为此目的检查类https://github.com/kephas-software/kephas/blob/master/src/Kephas.Core/Application/PreserveCultureThreadContextAppLifecycleBehavior.cs,它添加了文化保存行为。通常,您将AppLifecycleBehavior在方法中的 , 中实现这一点BeforeAppInitializeAsync

于 2019-04-17T20:38:46.893 回答