今天将多线程的知识有回顾了下,总结了几点:
新建一个线程(无参数,无返回值)
- Thread?th?=?new?Thread(new?ThreadStart(PrintName));?
- ?
- ?public??void?PrintName()????//?函数?
- ?{?
- ?????//函数体?
- ?}?
这里一定注意ThreadStart中的函数是没有返回值和参数的
那么有参数时,就该如下:
- Thread?th?=?new?Thread(new?ParameterizedThreadStart(PrintName));?
- public??void?PrintName(string name)????//?函数
- {
- ?//函数体?
- }
?
?如果遇到又需要返回值,又需要参数的时候,就可以考虑用异步:
但是需要先申明个委托
- 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