带参数的多线程如何去写?

带参数的多线程的方式

#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() + "毫秒");
}

时间: 2024-11-05 15:55:16

带参数的多线程如何去写?的相关文章

带参数的多线程

1.首先定义一个线程类 public class MyThread{ private string myarg; } 然后可以再这个线程类里面定义构造方法,这样就可以给这个线程传参数了 public MyThread(string aaa){ this.myarg=aaa; } 然后定义线程的运行方法,在这个方法里面可以调用当前类的参数 public void run(){ do something for thread; } 所以整个线程类就应该是这样 public class MyThrea

带参数的多线程的方式

本文来自:http://www.cnblogs.com/zeroone/archive/2013/09/04/3300274.html #region 执行带一个参数的多线程 Thread mythread = new Thread(new ParameterizedThreadStart(Calculate)); mythread.IsBackground = true; mythread.Start(500); #endregion private void Calculate(object

2014.2.24 带参数多线程实例

定义全局变量 ParameterizedThreadStart ParaStart; //表示带参数的多线程 Thread[] tds = new Thread[10]; //运行时再实例化 static object objLock = new object(); //多线程锁 //运行中 ParaStart = new ParameterizedThreadStart(ReadPic); for (int i = 0; i < 10; i++) //创建10个线程处理照片 { tds[i]

25.按要求编写一个Java应用程序: (1)编写一个矩形类Rect,包含: 两个属性:矩形的宽width;矩形的高height。 两个构造方法: 1.一个带有两个参数的构造方法,用于将width和height属性初化; 2.一个不带参数的构造方法,将矩形初始化为宽和高都为10。 两个方法: 求矩形面积的方法area() 求矩形周长的方法perimeter() (2)通过继承Rect类编写一个具有

package zhongqiuzuoye; public class Rect { public double width; public double height; Rect(double width,double height) //带有两个参数的构造方法,用于将width和height属性初化; { this.width=width; this.height=height; } Rect() //不带参数的构造方法,将矩形初始化为宽和高都为10. { width=10; height=

c# 多线程 调用带参数函数

线程操作主要用到Thread类,他是定义在System.Threading.dll下.使用时需要添加这一个引用.该类提供给我们四个重载的构造函数(以下引自msdn).       Thread (ParameterizedThreadStart) 初始化 Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托.     Thread (ThreadStart) 初始化 Thread 类的新实例.    由 .NET Compact Framework 支持.        Threa

C#多线程运行带参数与返回值函数

用ParameterizedTheradStart委托 带参数的ParameterizedThreadStart委托 public delegate void ParameterizedThreadStart(Object obj) 可以将要传送给线程函数的信息封装为一个对象,然后调用Thread类的以下构造函数: public Thread(ParameterizedThreadStart start) 启动线程时,向其传送一个参数信息对象即可 Thread t  = new Thread(n

带参数二维码的使用

带参数二维码的使用 最近做微信PC端网页微信相关功能的开发,从一个新手的角度来说,微信公众号的文档还是不好理解的,网上找的帖子大都也都基本上是复制微信公众平台上给的文档,开发微信带参数二维码过程中还是遇到不少坑的,在此把我的开发过程比较详细的记录下,希望对大家有所帮助. 我本次开发使用的是认证服务号. 1 接入 首先进入微信公众号 -> 基本配置 下面是基本配置的页面,在URL中填写服务器地址,这个地址就是接受微信推送事件的一个接口,我是使用thinkPHP框架开发的程序,在其中一个Module

php微信开发之带参数二维码的使用

最近做微信PC端网页微信相关功能的开发,从一个新手的角度来说,微信公众号的文档还是不好理解的,网上找的帖子大都也都基本上是复制微信公众平台上给的文档,开发微信带参数二维码过程中还是遇到不少坑的,在此把我的开发过程比较详细的记录下,希望对大家有所帮助. 我本次开发使用的是认证服务号. 1 接入首先进入微信公众号 -> 基本配置 下面是基本配置的页面,在URL中填写服务器地址,这个地址就是接受微信推送事件的一个接口,我是使用thinkPHP框架开发的程序,在其中一个Module(Decoration

【转】如何在命令行脚本中启动带参数的Windows服务

我们有一个自己编写的Windows服务,我们希望该服务在启动时可以根据用户输入的参数实现不同的功能. 要实现这样的需求并不是很难,下面这个例子我用来示范如何编写该服务 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Diagnostics; 6 using System.Linq; 7 using Syste