如果我有这个:
public string DoSomething(string arg)
{
string someVar = arg;
DoStuffThatMightTakeAWhile();
return SomeControl.Invoke(new Func<string>(() => someVar));
}
如果有多个线程同时调用此方法,并且一个线程在DoStuffThatMightTakeAWhile
处被阻塞,然后第二个线程以不同的arg
调用了DoSomething
,那么这是否会更改someVar
的值并因此使得DoSomething
在两次调用时都返回第二个版本的someArg
,还是每个线程都存在一个someVar
?
编辑:我认为我的Action
应该是一个Func
,所以进行了修改。
string myVar;
这样的声明将会 创建 一个名为myVar
的新变量,就像使用new
关键字创建对象一样。如果DoSomething
调用DoSomething
,这个规则也适用吗? - Juan