线程传参数问题
来源:互联网 发布:龙虎榜数据查询 编辑:程序博客网 时间:2024/05/22 09:05
Thread (ParameterizedThreadStart) 初始化 Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托。
Thread (ThreadStart) 初始化 Thread 类的新实例。
由 .NET Compact Framework 支持。
Thread (ParameterizedThreadStart, Int32) 初始化 Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托,并指定线程的最大堆栈大小。
Thread (ThreadStart, Int32) 初始化 Thread 类的新实例,指定线程的最大堆栈大小。
由 .NET Compact Framework 支持。
Thread t = new Thread(new ParameterizedThreadStart(Output));
t.Start(model);
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
//结构体
(class)
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"
);
}
}
public
static
void
Main()
{
RowCol model=newRowCol{row=1,col=2}
t.Start(model);
Console.Read();
}
0 0
- 线程传参数问题
- C#线程参数问题
- C#线程参数问题
- 线程传参数
- 线程传参数方法
- linux线程传参数
- 线程函数参数引发的问题
- linux中线程传入参数问题
- 线程Thread传递一个或多个参数问题
- 创建多个线程的参数传递问题
- pthread_create传递线程参数需要注意的问题
- setTimeout传参数问题
- setTimeout传参数问题
- PendingIntent传参数问题
- setTimeout传参数问题
- ajax 传参数问题
- SpringMVC传参数问题
- mybatis传参数问题
- 自定义CoordinatorLayout的Behavior(2):实现淘宝和QQ ToolBar透明渐变效果
- Python中列表、元组、占位符的用法
- 一路风景尽收眼底—2015年度总结
- 执行Junit遇到"Launching UTest' has encountered a problem
- 【iOS提高】单例模式在OC的使用
- 线程传参数问题
- Redis配置文件详解
- Git的配置和设置
- 即时通讯整理(一)openfire
- ecshop 手机号码 邮箱 登录
- 【Developer Log】ProGuard扰码可执行JAR包
- 菜鸟Android自定义View之旅——基础篇
- Android中的Bitmap和Drawable
- 如何成为一名优秀的全栈工程师