C# AsyncLocal 和CallContext

℡╲_俬逩灬. 提交于 2020-03-05 18:08:42
AsyncLocal<string> data = new AsyncLocal<string>();

                data.Value = "lcc";


                for (int i = 0; i < 20; i++)
                {
                    var current = i;

                    Thread.Sleep(500 * current);
                    Task.Run(() =>
                    {

                        Console.WriteLine($"-----[{current}]-----Begin:{data.Value}");
                        data.Value = current + "lcc";
                        Console.WriteLine($"-----[{current}]-----End:{data.Value}");
                    });


                    Console.WriteLine($"-----[{current}]-----Current:{data.Value}");
                }

                Console.ReadLine();

运行结果:

 

 

Begin 都是  初始值,即使在其他线程中 更改了data.value  其他线程也不会同步,并且主线程中 仍为 lcc

 

 

CallContext   (线程上下文)

LogicalCallContext

ExecutionContext(执行上下文)

AsyncLocal  (多线程共享变量)

ThreadLocal (线程内变量)

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!