C# 多线程编程,传参,接受返回值
2015-06-09 11:56
274 查看
今天将多线程的知识有回顾了下,总结了几点:
新建一个线程(无参数,无返回值)
Thread th = new Thread(new ThreadStart(PrintName));
public void PrintName() // 函数
{
//函数体
}
这里一定注意ThreadStart中的函数是没有返回值和参数的
那么有参数时,就该如下:
Thread th = new Thread(new ParameterizedThreadStart(PrintName));
th.start("参数");
public void PrintName(object arg) // 函数
{
//函数体 比如
Console.wrintline("{0}",arg.toString());
}
如果遇到又需要返回值,又需要参数的时候,就可以考虑用异步:
但是需要先申明个委托
public delegate string MethodCaller(string name);//定义个代理
MethodCaller mc = new MethodCaller(GetName);
string name = "my name";//输入参数
IAsyncResult result = mc.BeginInvoke(name,null, null);
string myname = mc.EndInvoke(result);//用于接收返回值
public string GetName(string name) // 函数
{
return name;
}
这里注意了,通过这种方式生成新线程是运行在后台的(background),优先级为normal
新建一个线程(无参数,无返回值)
Thread th = new Thread(new ThreadStart(PrintName));
public void PrintName() // 函数
{
//函数体
}
这里一定注意ThreadStart中的函数是没有返回值和参数的
那么有参数时,就该如下:
Thread th = new Thread(new ParameterizedThreadStart(PrintName));
th.start("参数");
public void PrintName(object arg) // 函数
{
//函数体 比如
Console.wrintline("{0}",arg.toString());
}
如果遇到又需要返回值,又需要参数的时候,就可以考虑用异步:
但是需要先申明个委托
public delegate string MethodCaller(string name);//定义个代理
MethodCaller mc = new MethodCaller(GetName);
string name = "my name";//输入参数
IAsyncResult result = mc.BeginInvoke(name,null, null);
string myname = mc.EndInvoke(result);//用于接收返回值
public string GetName(string name) // 函数
{
return name;
}
这里注意了,通过这种方式生成新线程是运行在后台的(background),优先级为normal
相关文章推荐
- C# 邮箱mail 发送类
- C#中 As 和强制转换的总结
- C# 中利用 Conditional 定义条件方法
- C#读文件操作
- C#和.net之间的关系
- C#实现一个简单的 Restful Service
- c#调用Restful API
- C#基础--之数据类型
- C#中的显式和隐式接口实现
- c# 操作excel(1)
- C#高级编程第六天----枚举
- C# List 去重
- C#中字典的使用
- C# List<>与Array性能比较
- C# int与string转化
- Visual C#每一次新版本的变化
- 使用属性(C# 编程指南)
- 使用C#调用mat
- 设计模式之二(decorator pattern)
- C# 继承实现父类方法、重写、重载