Avi*_*rix 1 .net multithreading c#-4.0
我如何将一些参数传递给从另一个类运行函数的新线程?我要做的是将一个或多个变量传递给一个位于另一个类中的函数,并由一个新线程调用.
我试图这样做>
Functions functions = new Functions();
string[] data;
Thread th = new Thread(new ParameterizedThreadStart(functions.Post()));
th.Start(data);
Run Code Online (Sandbox Code Playgroud)
但它显示错误"方法'没有重载'后'需要0个参数"
有任何想法吗 ?
由于你有这个标记的C#4,新的方法是:
Functions functions = new Functions();
string[] data = GetData();
Task.Factory.StartNew( () => functions.Post(data) );
Run Code Online (Sandbox Code Playgroud)
如果你真的想使用专用线程,而不是任务并行库,你可以.鉴于你的评论,听起来好像Post()被定义为Post(string[] data).这是不可行的,因为ParameterizedThreadStart期望方法Post(object data).
您可以通过lambdas解决此问题并使用ThreadStart而不是ParameterizedThreadStart,但是,无需更改方法:
Functions functions = new Functions();
string[] data = GetData();
Thread th = new Thread( () =>
{
functions.Post(data);
});
th.Start();
Run Code Online (Sandbox Code Playgroud)