实现带参数的多线程的方式
来源:互联网 发布:厄米共轭矩阵 编辑:程序博客网 时间:2024/04/29 19:15
前言
通常会有需求通过多线程调用带参数的委托函数,有一个参数的,也有多个参数的,下面来讲讲实现的方式
执行带一个参数的委托函数
#region 执行带一个参数的多线程 Thread mythread = new Thread(new ParameterizedThreadStart(Calculate)); mythread.IsBackground = true; mythread.Start(500); #endregion private void Calculate(object Max) //带一个参数的委托函数 { int max = (int)Max; Stopwatch stopwatch = Stopwatch.StartNew(); for (int i = 0; i < max; i++) { Thread.Sleep(5); } stopwatch.Stop(); long lSearchTime = stopwatch.ElapsedMilliseconds; MessageBox.Show(lSearchTime.ToString() + "毫秒"); }
执行带多个参数的委托函数
方式一: 定义一个类,将要传的参数设置为类的属性,然后将参数值赋值给类的属性,将类作为一个参数进行传达,以下代码通过两个参数示例,多个参数一样,代码如下
class MyClass { public int Max { get; set; } public int Min { get; set; } } #region 第一种方式:执行带多个参数的多线程 MyClass model = new MyClass(); model.Max = 500; model.Min = 0; Thread mythread1 = new Thread(new ParameterizedThreadStart(CalculateTwo)); mythread1.IsBackground = true; mythread1.Start(model); #endregion private void CalculateTwo(object Myclass) //带多个参数的委托函数 { MyClass model = (MyClass)Myclass; Stopwatch stopwatch = Stopwatch.StartNew(); for (int i = model.Min; i < model.Max; i++) { Thread.Sleep(5); } stopwatch.Stop(); long lSearchTime = stopwatch.ElapsedMilliseconds; MessageBox.Show(lSearchTime.ToString() + "毫秒"); }
方式二:lambda表达式的方式,简单方便,代码如下:
#region 第二种方式:执行带多个参数的多线程 Thread mythread2 = new Thread(() => CalculateThree(500, 0)); mythread2.IsBackground = true; //設置為後臺線程,程式關閉后進程也關閉,如果不設置true,則程式關閉,此線程還在內存,不會關閉 mythread2.Start(); #endregion private void CalculateThree(int Max,int Min) //带多个参数的委托函数 { Stopwatch stopwatch = Stopwatch.StartNew(); for (int i = Min; i < Max; i++) { Thread.Sleep(5); } stopwatch.Stop(); long lSearchTime = stopwatch.ElapsedMilliseconds; MessageBox.Show(lSearchTime.ToString() + "毫秒"); }
结束语
以上就是执行带参数的多线程的几种方式,各位看官是否还有更好的方式??
<script type="text/javascript"><!--google_ad_client = "ca-pub-1944176156128447";/* cnblogs 首页横幅 */google_ad_slot = "5419468456";google_ad_width = 728;google_ad_height = 90;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
- 实现带参数的多线程的方式
- 带参数的多线程的方式
- 带参数的多线程
- 带参数的多线程
- 带参数的多线程
- url带参数的实现方式
- 带你走进多线程的世界(多线程实现方式)
- 带你走进多线程的世界(多线程实现方式)
- 带你走进多线程的世界(多线程实现方式)
- 多线程的实现方式
- 多线程的实现方式
- 多线程的实现方式
- 多线程的实现方式
- c# 启动带参数的多线程方法
- java实现多线程的方式
- java多线程的实现方式
- Java多线程的实现方式
- Java多线程的实现方式
- OPENCV学习第九章第一题
- 6月26日网络编程
- 给大家推荐《麦库记事》
- 进程和线程的区别:
- libevent源码深度剖析
- 实现带参数的多线程的方式
- VS2010 C++ 提升权限 代码(win7) .
- 35. 面向对象的LotusScript(七)之导入Excel
- 6月27日TCP与UDP
- eclipse下使用cygwin的方法(Windows下用eclipse玩gcc/g++和gdb)
- 委托和事件:
- 关键词放在什么位置最好?关键字也有权重吗?
- 6月28日SQL基本语句
- 大家好。