using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime;
using System.Runtime.CompilerServices;
using System.Security;
using System.Text;
using System.Threading;
public class MainClass
{
[ThreadStatic]
private static string threadStaticData = "Empty";
public static void Main()
{
Thread[] threads = new Thread[3];
for (int i = 0; i < 3; i++)
{
threads[i] = new Thread(delegate(object j) {
threadStaticData = "thread no: " + j;
Console.WriteLine("[Thread{0}] = {1}", j, threadStaticData);
});
threads[i].Start(i);
}
foreach (Thread t in threads)
t.Join();
Console.WriteLine("[Master] after loop = {0}", threadStaticData);
}
}
[Thread0] = thread no: 0
[Thread1] = thread no: 1
[Thread2] = thread no: 2
[Master] after loop = Empty