详情:http://www.cnblogs.com/waw/archive/2011/08/29/2158763.html
例一:
using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Remoting.Messaging; using System.Text; using System.Threading; using System.Threading.Tasks; namespace LearnCallContext { class Program { static void Main(string[] args) { // CallContext:实现对上下文信息的存储 // 在主线程存储的数据,可以在主线程的生命周期内任何地方访问 CallContext.SetData("Name", "shz"); CallContext.SetData("Age", 17); // 在主线程存储的数据,可以在主线程和子线程的生命周期内任何地方访问 CallContext.LogicalSetData("LogicalName", "tom"); CallContext.LogicalSetData("LogicalAge", 28); GetDataInMainThread(); Thread t1 = new Thread(GetDataInSonThread); t1.Start(); Console.ReadKey(); } static void GetDataInMainThread() { object name = CallContext.GetData("Name"); object age = CallContext.GetData("Age"); object logicalName = CallContext.LogicalGetData("LogicalName"); object logicalAge = CallContext.LogicalGetData("LogicalAge"); Console.WriteLine("============ UI Thread==================="); Console.WriteLine("Name:" + name); Console.WriteLine("Age:" + age); Console.WriteLine("LogicalName:" + logicalName); Console.WriteLine("LogicalAge:" + logicalAge); Console.WriteLine(); } static void GetDataInSonThread() { object name = CallContext.GetData("Name"); object age = CallContext.GetData("Age"); object logicalName = CallContext.LogicalGetData("LogicalName"); object logicalAge = CallContext.LogicalGetData("LogicalAge"); Console.WriteLine("============ Son Thread==================="); Console.WriteLine("Name:" + name); Console.WriteLine("Age:" + age); Console.WriteLine("LogicalName:" + logicalName); Console.WriteLine("LogicalAge:" + logicalAge); Console.WriteLine(); } } }