Mega Code Archive

 
Categories / C# Tutorial / Thread
 

Use LocalDataStoreSlot

/* Book Accelerated C# 2005     * By Trey Nash     * ISBN: 1-59059-717-6     * 432 pp.     * Published: Aug 2006     * Price: $39.99 */ using System; using System.Threading; public class MyClass {     static MyClass() {         tlsSlot = Thread.AllocateDataSlot();     }     public MyClass() {         Console.WriteLine( "Creating MyClass" );     }     public static MyClass MyThreadDataClass {         get {             Object obj = Thread.GetData( tlsSlot );             if( obj == null ) {                 obj = new MyClass();                 Thread.SetData( tlsSlot, obj );             }             return (MyClass) obj;         }     }     private static LocalDataStoreSlot tlsSlot = null; } public class MainClass {     private static void ThreadFunc() {         Console.WriteLine( "Thread {0} starting...",Thread.CurrentThread.GetHashCode() );         Console.WriteLine( "tlsdata for this thread is \"{0}\"", MyClass.MyThreadDataClass );         Console.WriteLine( "Thread {0} exiting", Thread.CurrentThread.GetHashCode() );     }     static void Main() {         Thread thread1 = new Thread( new ThreadStart(ThreadFunc) );         Thread thread2 = new Thread( new ThreadStart(ThreadFunc) );         thread1.Start();         thread2.Start();     } } Thread 3 starting... Creating MyClass tlsdata for this thread is "MyClass" Thread 3 exiting Thread 4 starting... Creating MyClass tlsdata for this thread is "MyClass" Thread 4 exiting