1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
using System;
using System.Collections;
using System.Threading;
public class foo {
public static LocalDataStoreSlot dataslot = Thread.AllocateDataSlot();
~foo() {
string ID=(string)Thread.GetData(dataslot);
if(ID==null) {
Console.WriteLine("Set ID: foo");
Thread.SetData(dataslot, "foo");
}
Console.WriteLine("finalizer thread ID: {0}", (string)Thread.GetData(dataslot));
Environment.Exit(0);
}
public static int Main() {
ArrayList list = new ArrayList ();
Thread.SetData(dataslot, "ID is wibble");
Environment.ExitCode = 2;
while(true) {
foo instance = new foo();
list.Add (new WeakReference(instance));
Thread.Sleep (0);
}
return 1;
}
}
|