在 Kephas 中调用异步函数时 PreserveThreadContext() 是什么?

What is PreserveThreadContext() when calling async functions in Kephas?

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

一些例子:

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

我知道 ConfigureAwait(false),这是相似的吗?

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