C#4.0如何将变量传递给线程?

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个参数"

有任何想法吗 ?

Ree*_*sey 9

由于你有这个标记的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)