Thread thread = new Thread(Run);
thread.IsBackground = true;
thread.Start(list);
}
public void Run(object li)
{
List<string> list = li as List<string>;
foreach (string s in list)
{
MessageBox.Show(s);
}
}作者: 刘亚龙 时间: 2012-12-5 21:28
线程可以传入的委托的有两种类型,一种是ThreadStart,另一种是ParameterizedThreadStart。ThreadStart是不带参数的委托。当需要让线程实现带参数的方法时就需要用到ParameterizedThreadStart委托。它的声明形式为:
public delegate void ParameterizedThreadStart(object obj)
也就是它接受方法的参数必须是object类型。当需要传递多个参数时,可以用数组或集合转换成object类型传递。
启动线程时使用的是线程带参数的Start(object parameter)方法,传递的依然是object类型数据。
附上代码一段:
//执行带一个参数的方法,参数类型为object
public void ShowTxtName1(object name)
{
MessageBox.Show(string.Format("姓名:{0}", name));
}
//执行带多个参数的方法,因为参数类型为object,可以"做手脚"传入多个参数
public void ShowTxtName2(object name)
{
List<string> list = name as List<string>;
if (list != null)
{
foreach(string s in list)
MessageBox.Show(string.Format("姓名:{0}", s));
}
}