带参数的多线程的方式

本文来自: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 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() + "毫秒");
        }

标签: C#多线程

时间: 2024-10-07 23:51:43

带参数的多线程的方式的相关文章

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

带参数的多线程的方式 #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 stopwa

带参数的多线程

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

HttpClient 的GET(带参数)、POST请求方式,工具类方法

/** * 连接/断开操作 post方式 * @param url * @param json */ private boolean connOrDisconnOperator(String url,String json){ CloseableHttpClient client = null; CloseableHttpResponse response = null; boolean flag = false; try{ HttpPost httpPost = new HttpPost(ur

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]

springMVC带参数请求重定向

SpirngMVC返回逻辑视图名 可以分下面几种情况: 1. servlet进行请求转发,返回到jsp页面,如  return "index.jsp" ; 2. servlet 返回结果,让请求 重定向到某个jsp页面 ,此时servlet 返回语句类似:  return  " redirect : index.jsp "; 3. servlet 的返回结果是 请求另外一个servlet   此时servlet 返回语句类似:  return  " red

Hibernate 带参数查询的两种方式

1.使用?通配符 public User validate(String userName, String password) { String hql = "from User u where u.userName = ? and u.password = ?"; User user = null; List<User> list = ht.find(hql, new Object[]{userName, password}); if (list.size()!=0){

详解vue 路由跳转四种方式 (带参数)

详解vue 路由跳转四种方式 (带参数):https://www.jb51.net/article/160401.htm 1.  router-link ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1. 不带参数  <router-link :to="{name:'home'}"> <router-link :to="{path:'/home'}"> //name,path都行, 建议用name /

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