转 C#多线程及控制线程数量,对for循环输出效率
2013-01-19 20:52
573 查看
转自:http://www.cnblogs.com/StupidsCat/archive/2012/12/07/2807503.html
添加控件
NumbericUpDown,重命名为createCount,
textbox重命名为:f_groundcode,
textbox重命名为:f_ticketno
button重命名为:btnCreate
richtextbox重命名为:txtResult
运行效果图:
添加控件
NumbericUpDown,重命名为createCount,
textbox重命名为:f_groundcode,
textbox重命名为:f_ticketno
button重命名为:btnCreate
richtextbox重命名为:txtResult
int threadCountTmp = 0;//任务线程分派数 private void btnCreate_Click(object sender, EventArgs e) { int seed = Convert.ToInt32(createCount.Value) % 10 == 0 ? Convert.ToInt32(createCount.Value) / 10 : Convert.ToInt32(createCount.Value) / 10 + 1; for (int i = 0; i < seed; i++) { Thread threadTmp = new Thread(new ParameterizedThreadStart(TempOut)); threadTmp.Start(i); threadCountTmp++; Application.DoEvents();//响应窗口状态 while (true) { if (threadCountTmp < 10) break; }//推拉窗式控制多线程 线程数10 } } //分段后的数据发布给其它线程 public void TempOut(object o) { int tmp = Convert.ToInt32(o) * 10; int i = tmp; for (; i < (tmp + 10 <= createCount.Value ? tmp + 10 : createCount.Value); i++) { Thread thread = new Thread(new ParameterizedThreadStart(ResultOut)); thread.Start(i); threadCount++; while (true) { if (threadCount < 10) break; }//推拉窗式控制多线程 线程数10 } threadCountTmp--; } delegate void TextTmp(object o);//声明委托 int threadCount = 0;//任务线程 //委托函数 public void ResultOut(object o) { if (!txtResult.InvokeRequired) { txtResult.Text = "\n" + f_groundcode.Text + "," + f_ticketno.Text + DateTime.Now.ToLongDateString().Replace("-", "") + GetZero(6 - o.ToString().Length) + o.ToString() + "," + DateTime.Now.ToLongDateString().Replace("-", "") + DateTime.Now.ToLongTimeString().Replace(":", "") + txtResult.Text; } else { TextTmp tmpDel = new TextTmp(ResultOut); this.Invoke(tmpDel, o); } threadCount--; } //处理数字前面有多少个0 private string GetZero(int leng) { string result = ""; for (int i = 0; i < leng; i++) { result += "0"; } return result; }
运行效果图:
相关文章推荐
- 转 C#多线程及控制线程数量,对for循环输出效率
- C# 多线程、控制线程数提高循环输出效率
- C# 多线程、控制线程数提高循环输出效率
- C# 多线程、控制线程数提高循环输出效率
- [转载]C# 多线程、控制线程数提高循环输出效率
- C#中的多线程-线程同步基础 (控制线程数量)
- C#中的多线程-线程同步基础 (控制线程数量)
- Java多线程:用三个线程控制循环输出10次ABC
- Java多线程:用三个线程控制循环输出10次ABC
- Java多线程:用三个线程控制循环输出10次ABC
- Java多线程:用三个线程控制循环输出10次ABC
- (转).NET 4.5中使用Task.Run和Parallel.For()实现的C# Winform多线程任务及跨线程更新UI控件综合实例
- 多线程解决for循环效率问题
- 使用for循环控制打印输出
- c#中子线程控制进度条的一个简单例子(多线程问题)
- 华为oj,多线程。。保证四个线程按顺序循环输出
- Java多线程:用三个线程控制循环输出10次ABC
- 使用Java 多线程编程 让三个线程轮流输出ABC,循环10次后结束
- C# 执行固定个数任务自行控制进入线程池的线程数量,多任务同时但是并发数据限定
- C# 多线程的等待所有线程结束 用 ManualResetEvent 控制