public AsyncOperationItem <T, U> AddAsyncOperation <T, U>(T opt, System.Action <T> onProcess) where T : AsyncOperation
        {
            TimerInfo time;

            if (mDic.TryGetValue(opt, out time))
            {
                if (time == null)
                {
                    return(null);
                }

                AsyncOperationItem <T, U> old = time.target as AsyncOperationItem <T, U>;

                if (old == null)
                {
                    return(null);
                }

                if (onProcess != null)
                {
                    old.onProcess += onProcess;
                }

                return(old);
            }

            AsyncOperationItem <T, U> item = new AsyncOperationItem <T, U>();

            item.opt       = opt;
            time           = new TimerInfo("AsyncOperationItem", item);
            item.onProcess = onProcess;
            mDic.Add(opt, time);
            return(item);
        }
	public AsyncOperationItem<T> AddAsyncOperation<T>(T opt, Action<T> onProcess) where T: AsyncOperation
	{
		Timer time;
		if (mDic.TryGetValue (opt, out time)) {
			if (time == null)
				return null;
			AsyncOperationItem<T> old = time.UserData as AsyncOperationItem<T>;
			if (old == null)
				return null;

			if (onProcess != null)
				old.onProcess += onProcess;
			return old;
		}

		time = TimerMgr.Instance.CreateTimer (false, 0, true);
		time.AddListener (OnTimerEvent);
		AsyncOperationItem<T> item = new AsyncOperationItem<T> ();
		//AsyncOperationItem item = AsyncOperationItem.NewItem ();
		item.opt = opt; 
		item.onProcess = onProcess;
		time.UserData = item;

		mDic.Add (opt, time);

		return item;
	}
        private static void InPool(AsyncOperationItem <T, U> item)
        {
            if (item == null || !m_IsUsePool)
            {
                return;
            }

            InitPool();
            item.Reset();
            m_Pool.Store(item);
        }
        public static AsyncOperationItem <T, U> Create()
        {
            if (m_IsUsePool)
            {
                InitPool();
                AsyncOperationItem <T, U> ret = m_Pool.GetObject();
                ret.Reset();
                return(ret);
            }

            AsyncOperationItem <T, U> ret1 = new AsyncOperationItem <T, U>();

            return(ret1);
        }
    public AsyncOperationItem <T, U> AddAsyncOperation <T, U>(T opt, Action <T> onProcess) where T : AsyncOperation
    {
        ITimer time;

        if (mDic.TryGetValue(opt, out time))
        {
            if (time == null)
            {
                return(null);
            }
            AsyncOperationItem <T, U> old = time.UserData as AsyncOperationItem <T, U>;
            if (old == null)
            {
                return(null);
            }

            if (onProcess != null)
            {
                old.onProcess += onProcess;
            }
            return(old);
        }

        time = TimerMgr.Instance.CreateTimer(0, true);
        time.AddListener(OnTimerEvent);
        //AsyncOperationItem<T, U> item = new AsyncOperationItem<T, U> ();
        AsyncOperationItem <T, U> item = AsyncOperationItem <T, U> .Create();

        item.opt       = opt;
        item.onProcess = onProcess;
        time.UserData  = item;

        mDic.Add(opt, time);

        return(item);
    }
            public static AsyncOperationItem <T, U> Create()
            {
                AsyncOperationItem <T, U> ret1 = new AsyncOperationItem <T, U>();

                return(ret1);
            }