我刚开始使用线程,在我看过的示例中(如here和here),必须为方法分配新线程。但是,有没有办法在方法中制作它?我正在寻找这样的东西:
public void MyMethod()
{
//Start new thread that affects only this method
//Do stuff
//More stuff
}
谢谢。
答案 0 :(得分:3)
如果您不想创建单独的方法,可以启动匿名方法或lambda。
最简单的方法:
Task.Run(()=>{
// Your new thread code
});
请注意,这会创建闭包,并且在线程完成之前,不会释放您在线程中使用的父方法变量。另外,启动像这样的长时间运行的线程并不是一个好习惯,因为它使用线程池。
因此,在这种情况下,您可以执行类似下面的代码,或者使用更详细的语法来创建任务并指定TaskCreationOptions.LongRunning
参数。
new Thread((ThreadStart)delegate() {
// Your new thread code
}).Start();
您可以将新的Thread
对象放入变量中以便稍后控制它。