“当前”属性与ExecutionContext一起流动

时间:2013-06-21 18:33:38

标签: .net multithreading async-await

这是一个两部分问题:

  1. 有人可以提供ASP.NET / .NET属性列表,这些属性通常是与ExecutionContext一起流动的线程本地吗?

    HttpContext.Current? Thread.CurrentContext? Thread.CurrentPrincipal中? Thread.CurrentCulture?

    我可以依靠什么属性来存活/持续异步/等待?

    还有什么?

  2. 有没有办法添加将使用ExecutionContext自动流动的特定于应用程序的上下文信息?像

    这样的东西
    var ec = ExecutionContext.Capture();
    ec.CustomContext["MyCustomContext"] = ACustomContext;
    

1 个答案:

答案 0 :(得分:13)

最好的资源是Stephen Toub的ExecutionContext vs. SynchronizationContext。没有像您正在寻找的属性列表。

ASP.NET实际上使用SynchronizationContextHttpContext.Currenttreats Thread.CurrentPrincipal rather oddly

您可以使用LogicalSetData / LogicalGetData添加自己的上下文。但是,您应该只存储不可变数据。我记录了这个on my blog