Example #1
0
    /// <summary>
    /// 设置连接器参数,检查是否触发
    /// </summary>
    /// <param name="iIndex"></param>
    /// <param name="o"></param>
    public void SetLinkerArgs(int iIndex, object o)
    {
        if (iIndex >= 0 && iIndex < mUserArgs.Length)
        {
            mUserArgs[iIndex] = o;
        }
        ///检查是否触发
        if (CheckArgsFull())
        {
            try
            {
                if (mLinkerFun != null)
                {
                    mLinkerFun(this, mUserArgs);
                }
            }
            catch (System.Exception ex)
            {
                LogSystem.LogError(ex.ToString());
            }

            ///回收所有触发器
            UserDelegateTriggle.CollectTriggle(mTriggles);
        }
    }
Example #2
0
 /// <summary>
 /// 回收所有触发器,用于连接器的回收
 /// </summary>
 /// <param name="args"></param>
 public static void CollectTriggle(object[] args)
 {
     for (int i = 0; i < args.Length; i++)
     {
         UserDelegateTriggle triggle = args[i] as UserDelegateTriggle;
         if (triggle != null)
         {
             triggle.Clear();
             mTrigglePools.Enqueue(triggle);
         }
     }
 }
Example #3
0
 /// <summary>
 /// 调用一个异步触发器
 /// </summary>
 /// <param name="triggle"></param>
 /// <param name="bFree"></param>
 public static void Triggle(UserDelegateTriggle triggle, params object[] args)
 {
     if (triggle != null)
     {
         ///触发返回是否回收
         if (triggle.Triggle(args))
         {
             triggle.Clear();
             ///没有触发连接器的,直接回收
             mTrigglePools.Enqueue(triggle);
         }
     }
 }
Example #4
0
    /// <summary>
    /// 设置触发器连接对象
    /// </summary>
    /// <param name="args"></param>
    /// <returns></returns>
    public static UserDelegateTriggleLinker SetTriggleLinker(params object[] args)
    {
        UserDelegateTriggleLinker triggleLinker = new UserDelegateTriggleLinker();

        triggleLinker.mTriggles = args;
        for (int i = 0; i < args.Length; i++)
        {
            UserDelegateTriggle triggle = args[i] as UserDelegateTriggle;
            if (triggle != null)
            {
                ///设置触发器的连接者
                triggle.SetTriggleLinker(triggleLinker);
            }
        }
        return(triggleLinker);
    }
Example #5
0
    /// <summary>
    /// 获取当前可用的异步触发器,提供触发类型
    /// </summary>
    /// <param name="ud"></param>
    /// <returns></returns>
    public static UserDelegateTriggle GetTriggle(UserDelegateFun ud, params object[] args)
    {
        UserDelegateTriggle triggle;

        if (mTrigglePools.Count > 0)
        {
            triggle = mTrigglePools.Dequeue();
            triggle.SetDelegateFun(ud);
            triggle.SetContext(args);
        }
        else
        {
            triggle = new UserDelegateTriggle();
            triggle.SetDelegateFun(ud);
            triggle.SetContext(args);
        }
        return(triggle);
    }