C# 多线程参数的使用

一个参数:

Thread.Start方法可以带一个参数:

public static void Main()  {
  Thread t = new Thread(new ParameterizedThreadStart(B));
  t.Start("B");  

  Console.Read();
}  

private static void B(object obj)
{
  Console.WriteLine("Method {0}!",obj.ToString ());
}

多个参数:

1、将线程执行过程封装成一个类,将使用到的参数设置为类的变量或属性。使用时,将先声明并实体化一个执行类,并将其属性赋值,然后再创建线程调用其执行方法。

public static void Main()  {
  My m = new My();
  m.x = 2;
  m.y = 3;  

  Thread t = new Thread(new ThreadStart(m.C));
  t.Start();
  Console.Read();
}  

class My
{
  public int x, y;  

  public void C()
  {
    Console.WriteLine("x={0},y={1}", this.x, this.y);
  }
}  

2、使用委托

private static void Main()
{
  Thread thread = new Thread(new ThreadStart(delegate{ Flash(a,b); }));
  thread.IsBackground = true;
  thread.Start();}

private static void Flash(int a,string b)
{
  Console.WrilteLine("a is {0},b is {1}",a,b);
}

C# 多线程参数的使用,布布扣,bubuko.com

时间: 2024-11-04 22:44:22

C# 多线程参数的使用的相关文章

c++多线程参数的传递

#include <iostream> #include <pthread.h> //多线程相关操作头文件,可移植众多平台 using namespace std; struct mypara { int para1; //参数1 char *para2; //参数2 pthread_t wait; }; void* thread1( void* args ) //本函数演示的是数据的传出 { mypara *my = (mypara *)args; srand(unsigned(

C#秘密武器之多线程——参数与返回值

概述 线程函数要么没有参数,要么只能有一个object参数,而且均没有返回值,这样就大大降低了程序的灵活性,其实我们想要的是能像普通方法一样正常使用参数和返回值!能不能实现这个需求呢?下面就介绍两种方法 一.添加外壳方法 原理:把参数传递变成了对变量的调用 方法:定义一个专门的线程类. 1.需要向线程传递的参数和返回值作为类的公共属性: 2.线程函数的真正方法也放在该类里边 3.加壳的线程函数也放在里边(真正调用的是2的方法) public class MyThread { public dou

Linux Shell 多线程编程--原创

相关命令文件 1.runCommandInThreads.sh 多线程实现主代码 cdir=$(dirname $BASH_SOURCE) ##Current directory of this script file. source $cdir/logUtil.sh function createFile() { local dir=$1 local idx=$2 local fl="$dir/$idx" touch $fl } function execShellCommand()

windows基础复习

1.1.命令提示符(控制台)是一个软件:如果你的软件设置为控制台用户界面,那么Window会拿命令提示行来运行你的软件. 1.2.如果是窗口的话,Windows就不会来管你,就只是直接加载. 1.3.hPrevInstance:在你的程序中永远都不要使用. 1.4.进程实例句柄:加载到地址空间的每一个执行体或者DLL文件都被赋予了一个独一无二的实例句柄. 1.5.进程在死亡的时候我们需要做一些回收和清理的事情. 1.6.内核对象泄露是会比内存泄露更加麻烦的事情.内存泄露可以通过关闭进程来解决,而

Atitit.异步编程 java .net php python js 的比较

Atitit.异步编程 java .net php python js 的比较 1. 1.异步任务,异步模式,  APM模式,,  EAP模式, TAP 1 1.1.       APM模式: BeginXXX/EndXXX, IAsyncResult 2 1.2.       EAP模式(基于事件的异步模式) 2 1.3.      TAP(基于任务的异步模式) 2 2. 异步的实现机制::主要是通过线程and线程池实现的... 2 3. 异步编程的开发::当前都是通过api的,将来应该可以使

关于Delphi中多线程传递参数的简单问题

http://bbs.csdn.net/topics/390513469/ unit uThread; interface uses Classes; type Th = class(TThread) private { Private declarations } protected procedure Execute; override; end; 以上是创建的一个多线程 我在另外一个单元里Unit1有一个函数 function Myfun(username,password:string)

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]

带参数的多线程

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

C# 使用多线程如何传递两个以上参数的实现方法(附示例)

某些情况下当我们启动一个线程的时候会向该线程传递参数,有时除了功能上需要之外,我觉得还有就是为了我们能管理好启动的线程组(当然,只开一两个线程什么的也谈不上不好管理了,我说的线程组是指10+的线程,我们很难去主动控制的). 因为刚接触C#,所以还没有在C#下用过多线程去实现某些功能.通过学习我发现单纯的去启动线程很容易,反而是想要往线程中传一些参数变得有点说道了,这里我想说传入参数的数量为>=2.不过我们还是一步一步的来,带大家过一遍C#下的多线程怎么搞. 以上一篇讲的网络通信的例子,把整个过程