线程执行上下文传值

今天复习看<>时看到关于各线程上下文传递,笔记一下。

---------------------------------------------------------

每个线程都关联一个执行上下文数据结构。执行上下文包括的东西又安全设置、宿主设置以及逻辑调用上下文数据。默认情况,CLR自动造成初始线程的执行上下文向任何辅助线程“流”去,会把它们【复制】到辅助线程。

namespace ConsoleAppDemo
{
    class Program
    {

        static void Main(string[] args)
        {
            Console.WriteLine(" Begin  ");
            CallContext.LogicalSetData("name", "vezn");//设置参数
            bool result = ThreadPool.QueueUserWorkItem(ComputeBoundOp); //将方法加入线程池队列
            ExecutionContext.SuppressFlow();  //阻止Main线程的执行上下文流动
            result = ThreadPool.QueueUserWorkItem(ComputeBoundOp1);
            Console.WriteLine(" Main  :{0}", CallContext.LogicalGetData("name"));
            Console.Read();
        }

        private static void ComputeBoundOp(object state)
        {
            Console.WriteLine(" In ComputeBoundOp: {0}", CallContext.LogicalGetData("name"));
            Thread.Sleep(5000);
        }

        private static void ComputeBoundOp1(object state)
        {
            Console.WriteLine(" In ComputeBoundOp1: {0}", CallContext.LogicalGetData("name"));
            Thread.Sleep(10000);
        }
    }
}

线程执行上下文传值_第1张图片

你可能感兴趣的:(.NET)