C#,往线程里传参数的方法总结
来源:互联网 发布:three.js vr demo 编辑:程序博客网 时间:2024/05/16 01:49
Thread (ParameterizedThreadStart) 初始化 Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托。
Thread (ThreadStart) 初始化 Thread 类的新实例。
由 .NET Compact Framework 支持。
Thread (ParameterizedThreadStart, Int32) 初始化 Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托,并指定线程的最大堆栈大小。
Thread (ThreadStart, Int32) 初始化 Thread 类的新实例,指定线程的最大堆栈大小。
由 .NET Compact Framework 支持。
我们如果定义不带参数的线程,可以用ThreadStart,带一个参数的用ParameterizedThreadStart。带多个参数的用另外的方法,下面逐一讲述。
一、不带参数的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using
System;
using
System.Collections.Generic;
using
System.Text;
using
System.Threading;
namespace
AAAAAA
{
class
AAA
{
public
static
void
Main()
{
Thread t =
new
Thread(
new
ThreadStart(A));
t.Start();
Console.Read();
}
private
static
void
A()
{
Console.WriteLine(
"Method A!"
);
}
}
}
结果显示Method A!
二、带一个参数的
由于ParameterizedThreadStart要求参数类型必须为object,所以定义的方法B形参类型必须为object。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
using
System;
using
System.Collections.Generic;
using
System.Text;
using
System.Threading;
namespace
AAAAAA
{
class
AAA
{
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 ());
}
}
}
结果显示Method B!
三、带多个参数的
由于Thread默认只提供了这两种构造函数,如果需要传递多个参数,我们可以自己将参数作为类的属性。定义类的对象时候实例化这个属性,然后进行操作。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
using
System;
using
System.Collections.Generic;
using
System.Text;
using
System.Threading;
namespace
AAAAAA
{
class
AAA
{
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);
}
}
}
结果显示x=2,y=3
四、利用结构体给参数传值。
定义公用的public struct,里面可以定义自己需要的参数,然后在需要添加线程的时候,可以定义结构体的实例。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//结构体
struct
RowCol
{
public
int
row;
public
int
col;
};
//定义方法
public
void
Output(Object rc)
{
RowCol rowCol = (RowCol)rc;
for
(
int
i = 0; i < rowCol.row; i++)
{
for
(
int
j = 0; j < rowCol.col; j++)
Console.Write(
"{0} "
, _char);
Console.Write(
"\n"
);
}
}
- C#,往线程里传参数的方法总结
- C#,往线程里传参数的方法总结
- C#WinForm 往线程里传参数的方法总结
- C#,往线程里传参数的方法总结
- C#往线程里传参数的方法总结
- 往线程里传参数的方法总结
- 往线程里传参数的方法总结
- C#往线程里传参数的方法
- C#往线程里传递参数的方法小结
- 线程的方法里怎么才能带参数?
- C#如何在线程里调用带参数的方法
- C#线程进程总结(线程调用带参数的方法)
- 【C#】40. 线程参数传递的三种方法
- 向线程传递多个参数的变通方法(c#)
- 线程传参数方法
- QT线程中如何修改界面?(QT往线程里传参数)
- C语言里的可变参数
- C语言里的可变参数
- (转)保护自己的Flash程序(AS3) -- 基于socket方式传送swf文件
- 为Exchange server 2010新建路由组连接器
- hibernate延迟加载
- 怎样让eclipse的字体变大
- DedeCMS信息发布员发布文章错误Error page的问题
- C#,往线程里传参数的方法总结
- 学习使用多媒体
- OpenCV學習心得(2) -- 建立一個類來簡化OpenCV的函數.
- 查找一目录下面所有文件超过30M文件
- Linux下Nutch分布式配置和使用
- 写入文件 ../uploads/allimg/100407/1-10040G40556.jpg 失败
- usb高速握手过程
- LaTex中插入VISO 和 MATLAB 经验总结
- UTMI及USB 2.0 PHY高速传输特性分析