public static void BeginLoadOperation ()
		{
			Interlocked.Increment (ref loading);
			LoadOperation op = (LoadOperation) Thread.GetData (loadControlSlot);
			if (op == null) {
				op = new LoadOperation ();
				Thread.SetData (loadControlSlot, op);
			}
			op.LoadingCount++;
		}
        public static void EndLoadOperation()
        {
            Interlocked.Decrement(ref loading);
            LoadOperation op = (LoadOperation)Thread.GetData(loadControlSlot);

            if (op != null && --op.LoadingCount == 0)
            {
                Thread.SetData(loadControlSlot, null);
                op.End();
            }
        }
        public static void BeginLoadOperation()
        {
            Interlocked.Increment(ref loading);
            LoadOperation op = (LoadOperation)Thread.GetData(loadControlSlot);

            if (op == null)
            {
                op = new LoadOperation();
                Thread.SetData(loadControlSlot, op);
            }
            op.LoadingCount++;
        }
        public static void LoadControl(ILoadController rc)
        {
            if (loading == 0)
            {
                return;
            }
            LoadOperation op = (LoadOperation)Thread.GetData(loadControlSlot);

            if (op != null)
            {
                op.Add(rc);
            }
        }