using System; using System.Threading; public class IntClass { public int i; public IntClass (int val) { i = val; } public int get () { return i; } } public class Gen { [ThreadStaticAttribute] static T field; public static void setField (T t) { field = t; } public static T getField () { return field; } } public class main { static int i1; static int i2; public static void otherThread () { Gen.setField (new IntClass (2)); i2 = Gen.getField ().get (); } public static int Main () { Gen.setField (new IntClass (1)); Thread thread = new Thread (main.otherThread); thread.Start (); thread.Join (); i1 = Gen.getField ().get (); if (i1 != 1 || i2 != 2) return 1; return 0; } }