我该如何使用ExecutionContext来提供自己上下文的流程?

4

更新:

发现了类似的问题.

我想要为我们的ASP.NET应用程序实现一些遵循AmbientContext设计模式的服务。
例如,我需要用户名称(例如Thread.CurrentPrincipal)在请求处理的最开始设置并在执行异步操作时在线程之间流动。
因此,我需要将数据附加到ExecutionContext中,然后在请求处理完成后进行分离。

不幸的是,我不知道如何做到这一点。

文档中,只有一个小提示:

在内部,ExecutionContext存储与LogicalCallContext相关联的所有数据。这允许在复制和传输ExecutionContext时传播LogicalCallContext数据。


对于SynchronizationContext(我打算建议使用它),和ExecutionContext之间的区别我一无所知,于是通过谷歌来到了这里:http://blogs.msdn.com/b/pfxteam/archive/2012/06/15/executioncontext-vs-synchronizationcontext.aspx - brumScouse
@brumScouse 正是从这篇文章中,我得出了ExecutionContext比SynchronizationContext更适合作为一个更普遍的东西的结论。 - Pavel Voronin
@brumScouse,我得到答案的唯一事情就是阅读文章下面的评论 =) - Pavel Voronin
也许我应该更深入地阅读一些!好的,我会有兴趣阅读那些内容。 - brumScouse
1个回答

2

是的,我在自己写了一个非常相似的实现之后才看到了斯蒂芬的文章。 - Pavel Voronin
请确保使用LogicalSetData/LogicalGetData在异步调用之间保留数据(例如,当您调用数据库或API时)。- https://learn.microsoft.com/en-us/dotnet/api/system.runtime.remoting.messaging.callcontext?redirectedfrom=MSDN&view=netframework-4.7.2 - Sergii Shumakov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接