我是线程使用的初学者,在我看到的示例(如 here 和 here )中,必须将新线程分配给方法。但是,有没有办法在方法中做到这一点?我正在寻找这样的东西:
public void MyMethod()
{
//Start new thread that affects only this method
//Do stuff
//More stuff
}
谢谢。
最佳答案
如果您不想创建单独的方法,您可以启动匿名方法或 lambda。
最简单的方法:
Task.Run(()=>{
// Your new thread code
});
请注意,这会创建您在线程中使用的闭包和父方法变量,直到您的线程完成后才会被释放。像这样启动一个长时间运行的线程也不是一个好习惯,因为它使用了线程池。
因此在这种情况下,您可以执行类似下面代码的操作,或者使用更详细的语法来创建任务并指定 TaskCreationOptions.LongRunning
参数。
new Thread((ThreadStart)delegate() {
// Your new thread code
}).Start();
您可以将新的Thread
对象放入变量中以便稍后对其进行控制。
关于c# - 以相同的方法在新线程中启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21967278/