以相同的方法在新线程中开始

时间:2014-02-23 10:55:21

标签: c# multithreading

我刚开始使用线程,在我看过的示例中(如herehere),必须为方法分配新线程。但是,有没有办法在方法中制作它?我正在寻找这样的东西:

public void MyMethod()
{
//Start new thread that affects only this method

//Do stuff
//More stuff

}

谢谢。

1 个答案:

答案 0 :(得分:3)

如果您不想创建单独的方法,可以启动匿名方法或lambda。

最简单的方法:

Task.Run(()=>{
  // Your new thread code
});

请注意,这会创建闭包,并且在线程完成之前,不会释放您在线程中使用的父方法变量。另外,启动像这样的长时间运行的线程并不是一个好习惯,因为它使用线程池。

因此,在这种情况下,您可以执行类似下面的代码,或者使用更详细的语法来创建任务并指定TaskCreationOptions.LongRunning参数。

new Thread((ThreadStart)delegate() {
 // Your new thread code
}).Start();

您可以将新的Thread对象放入变量中以便稍后控制它。