/// <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); } }
/// <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); } }
/// <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); } }
/// <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 }); }
/// <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 }); }