多线程Thread 执行的方法(有参数与无参数)
我们看到Thread 的源文件

可以看出是常用的执行方法有ParameterizedThreadStart、与ThreadStart
so,我们只需要了解ParameterizedThreadStart与ThreadStart区别就可以掌握了
下面看例子:
1、ThreadStart 这个委托定义为 无参 void ThreadStart()
ThreadStart threadStart=new ThreadStart(Calculate);
Thread thread=new Thread(threadStart);
thread.Start();
public void Calculate()
{
double Diameter=0.5;
Console.Write("The Area Of Circle with a Diameter of {0} is {1}"Diameter,Diameter*Math.PI);
}
2、ParameterThreadStart的定义为void ParameterizedThreadStart(object state),使用这个这个委托定义的线程的启动函数可以接受一个输入参数,具体例子如下 :
public static bool ControlSpeekingHornNew(string TowerCode, string even_type, string ip, int port, int isOpen, string buf)
{
Thread_HornModel model = new Thread_HornModel();
model.TowerCode = TowerCode;
model.ip = ip;
model.port = port;
model.even_type = even_type;
model.isOpen = isOpen;
model.buf = buf;
Thread _thread = new Thread(new ParameterizedThreadStart(ThreadControlSpeekingHornNew));
_thread.Start(model);
return true;
}
// 注意这里只能使用object类型,不能使用具体的 Thread_HornModel类型,传参进去再进行转换
public static void ThreadControlSpeekingHornNew(object resons)
{
if(resons is Thread_HornModel)
{
Thread_HornModel _data = (Thread_HornModel)(resons);
string TowerCode = _data.TowerCode;
string even_type = _data.even_type;
string ip = _data.ip;
int port = _data.port;
int isOpen = _data.isOpen;
string buf = _data.buf
// do something
}
}
public class Thread_HornModel
{
public string TowerCode { get; set; }
public string even_type { get; set; }
public string ip { get; set; }
public int port { get; set; }
public int isOpen { get; set; }
public string buf { get; set; }
}