using System; using System.Security.Principal; using System.Threading; using System.Security.Permissions; using System.Runtime.Remoting.Messaging; public class Starter { public static void Main() { CallContext.SetData("TestData", 100); Apple myapple=new Apple(); myapple.Peel(); Thread t=new Thread(new ThreadStart(Thread2)); t.Start(); t.Join(); CallContext.FreeNamedDataSlot("TestData"); } public static void Thread2() { try { int data=(int) CallContext.GetData("TestData"); Console.WriteLine("Thread2: The data is {0}", data); } catch(SystemException) { Console.WriteLine("Thread2: CallContext.GetData failed"); } } } class Apple { public void Peel() { try { int data=(int) CallContext.GetData("TestData"); Console.WriteLine("Peel: The data is {0}", data); } catch(SystemException) { Console.WriteLine("Peel: CallContext.GetData failed"); } } }