小编Lar*_*all的帖子

为什么逻辑调用上下文不跨线程传播?

我有一个奇怪的问题,逻辑调用上下文没有传播到我的应用程序中的线程.

在此示例中,线程(在设置逻辑调用上下文数据之前创建)不会获取新值:

class Program
{
    static void Main(string[] args)
    {
        var dispatcher = new MessageDispatcher();

        //Logical call context data not set yet
        Console.WriteLine($"Main: {Thread.CurrentThread.ManagedThreadId}: {CallContext.LogicalGetData("myvar")}"); // Main logical call context data is not set yet = Null
        dispatcher.Broadcast("a string"); // logical call context data is still not set yet = Null

        //Logical call context data is set now
        CallContext.LogicalSetData("myvar", "Logical call context variable");
        Console.WriteLine($"Main: {Thread.CurrentThread.ManagedThreadId}: {CallContext.LogicalGetData("myvar")}"); // Main logical call context data is set = return value

        dispatcher.Broadcast("a string"); // …
Run Code Online (Sandbox Code Playgroud)

.net c# multithreading

3
推荐指数
1
解决办法
4021
查看次数

标签 统计

.net ×1

c# ×1

multithreading ×1