0元购怎么在网站做,wordpress火车头但存图片,网络购物网站大全,外贸网站平台有几个在C#构造一个线程时#xff0c;要向其传递一个函数#xff0c;这个函数可以试简单的无参函数#xff0c;也可以是参数为Object类型的函数#xff0c;但是由于参数类型为Object#xff0c;因此编译器无法实行类型检查#xff0c;看下面的例子#xff1a;
class Program{… 在C#构造一个线程时要向其传递一个函数这个函数可以试简单的无参函数也可以是参数为Object类型的函数但是由于参数类型为Object因此编译器无法实行类型检查看下面的例子
class Program{static void Main(string[] args){Program obj new Program();ParameterizedThreadStart PTSD new ParameterizedThreadStart(obj.DisplayNumbers);Thread t1 new Thread(PTSD);t1.Start(Hi); Console.Read();}public void DisplayNumbers(object Max){int Number Convert.ToInt32(Max);for (int i 1; i Number; i){Console.WriteLine(Method1 : i); } }}
上面的代码在编译的时候是没有问题的但是运行会报错因为字符串无法转为整数 为此要如何避免这种问题呢
答案是将传递的参数封装到类中
看具体的例子
假设我想让多线程执行一个函数DisplayInfo这个函数有两个参数: public void DisPlayInfo(string Name,int Age){Console.WriteLine($\t姓名{Name}\t\n 年龄{Age});}
我么可以将参数剥离并和函数放在同一个类中 public class PassParametersToThread{public int Age { get; set; }public string Name { get; set; }string.Empty;public PassParametersToThread(int age,string name){Age age;Name name;}public void DisPlayInfo(){Console.WriteLine($\t姓名{Name}\t\n 年龄{Age});}}
这样在执行时我们向多线程传递的是类PassParameter
PassParametersToThread p new PassParametersToThread(20, 小红);
Thread t1 new Thread(p.DisPlayInfo);
t1.Start();
sToThread的成员函数且没有任何参数。
这样就实现了安全的将参数传递到线程中。
下一篇将介绍如何从线程中获取运算结果