我有一个奇怪的问题,逻辑调用上下文没有传播到我的应用程序中的线程.
在此示例中,线程(在设置逻辑调用上下文数据之前创建)不会获取新值:
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)