如何将多个参数传递给C#线程?

Tec*_*hee 17 c# multithreading

如何将多个参数传递给C#线程?任何例子将不胜感激.

Osc*_*ros 43

假设你有一个方法:

void A(string a, int b) {}
Run Code Online (Sandbox Code Playgroud)

这应该工作(.NET 2.0):

ThreadStart starter = delegate { A("word", 10); };
Thread thread = new Thread(starter);

thread.Start();
Run Code Online (Sandbox Code Playgroud)

对于更高版本,以下(更短):

ThreadStart starter = () => A("word", 10);
Thread thread = new Thread(starter);

//or just...
//Thread thread = new Thread(() => A("word",10));

thread.start()
Run Code Online (Sandbox Code Playgroud)

  • 是.使用C#2,您创建一个不带参数的委托,通过使用`delegate {/*statements here*/}`,使用C#3,您可以创建一个带有单个参数的所谓lambda,其中包含以下内容: x => {/*statements here*/}`,这是一个带有一个参数的匿名方法.为了使它不接受任何参数或多个参数,您可以使用括号来指定:`()=> {/*statements*/}`和`(arg1,agr2)=> {/*statements*/}`.如果您只有一个语句或表达式,则可以省略外括号,如本例所示. (2认同)
  • @Dykam:`new Thread(()=> A("word",10)).Start();` (2认同)