using System; using System.Threading; class Class1 { static LocalDataStoreSlot slot = Thread.AllocateDataSlot(); ~Class1() { Console.WriteLine("Finalizer"); } static void Main(string[] args) { new Thread(new ThreadStart(ThreadProc)).Start(); new Thread(new ThreadStart(ThreadProc2)).Start(); Thread.Sleep(100); Thread.SetData(slot, new Class1()); } static void ThreadProc2() { Thread.SetData(slot, new Class1()); } static void ThreadProc() { for(;;) { Thread.Sleep(100); GC.Collect(); GC.WaitForPendingFinalizers(); } } }