Exemplo n.º 1
0
 /// <summary>
 /// 批量启动执行count数量的线程
 /// </summary>
 /// <param name="action">执行逻辑</param>
 /// <param name="count">参数列表</param>
 public void BatchAdd(CoAction <CoData> action, int count)
 {
     for (int i = 0; i < count; i++)
     {
         Add(action);
     }
 }
Exemplo n.º 2
0
 /// <summary>
 /// 根据参数列表批量启动执行线程
 /// </summary>
 /// <param name="action">执行逻辑</param>
 /// <param name="paramList">参数列表</param>
 public void BatchAdd(CoAction <dynamic, CoData> action, IEnumerable <dynamic> paramList)
 {
     if (paramList == null)
     {
         return;
     }
     foreach (dynamic p in paramList)
     {
         Add(action, p);
     }
 }
Exemplo n.º 3
0
 /// <summary>
 /// 根据参数列表批量启动执行线程
 /// </summary>
 /// <typeparam name="T">类型</typeparam>
 /// <param name="action">执行逻辑</param>
 /// <param name="paramList">参数列表</param>
 public void BatchAdd <T>(CoAction <T, CoData> action, IEnumerable <T> paramList)
 {
     if (paramList == null)
     {
         return;
     }
     foreach (T p in paramList)
     {
         Add(action, p);
     }
 }
Exemplo n.º 4
0
        /// <summary>
        /// 添加启动一个无参数的线程
        /// th.Add(coData => { //todo your code});
        /// </summary>
        /// <param name="action">执行逻辑</param>
        public void Add(CoAction <CoData> action)
        {
            if (action == null)
            {
                return;
            }
            Interlocked.Increment(ref count);
            var threadData = GetThreadData();

            ThreadPool.QueueUserWorkItem(new WaitCallback(this.GetSwappedAction <object>()), new CoParam()
            {
                OneParamAction = o => { action(threadData); },
                ParamType      = CoParamType.NONE,
                Data           = threadData
            });
        }
Exemplo n.º 5
0
        /// <summary>
        /// 添加启动指定参数类型的线程
        /// YourClass yourParam = new YourClass();
        /// th.Add<YourClass>((param, coData) => { //your codes },yourParam);
        /// </summary>
        /// <typeparam name="T">类型</typeparam>
        /// <param name="action">执行逻辑</param>
        /// <param name="param">动态参数</param>
        public void Add <T>(CoAction <T, CoData> action, T param)
        {
            if (action == null)
            {
                return;
            }
            Interlocked.Increment(ref count);
            var threadData = GetThreadData();

            ThreadPool.QueueUserWorkItem(new WaitCallback(this.GetSwappedAction <T>()), new CoParam()
            {
                OneParamAction = (p => { action((T)param, threadData); }),
                ParamType      = CoParamType.TYPE,
                objectParam    = param,
                Data           = threadData
            });
        }