我注意到,在所有的Kephas示例中,当调用异步方法时,最后都会调用PreserveThreadContext()。这是做什么的?
下面是一些例子:
var result = await dataContext.Query<Document>()
.ToListAsync()
.PreserveThreadContext();我知道ConfigureAwait(false),这是类似的东西吗?
发布于 2019-04-18 04:38:47
在某种程度上,是的,这意味着在服务器环境中,它还包括对ConfigureAwait(false)的调用。但它还会在从异步调用返回时还原线程绑定区域性(和UI区域性),以便以一致的方式本地化字符串。这是因为您可能会在返回时发现自己在另一个线程中,其中区域性是默认的区域性,而不是配置的区域性。此外,您还可以添加自己的行为来存储/恢复其他线程绑定信息。为此,请检查类https://github.com/kephas-software/kephas/blob/master/src/Kephas.Core/Application/PreserveCultureThreadContextAppLifecycleBehavior.cs,该类添加了区域性保留行为。通常,您将在BeforeAppInitializeAsync方法的AppLifecycleBehavior中实现此功能。
https://stackoverflow.com/questions/55705233
复制相似问题