Multithreading and closures in .NET

Если у меня есть это:

public string DoSomething(string arg)
{
    string someVar = arg;
    DoStuffThatMightTakeAWhile();
    return SomeControl.Invoke(new Func<string>(() => someVar));
}

И этот метод может быть вызван одновременно из нескольких потоков, и один поток застрял на DoStuffThatMightTakeAWhile, а затем второй поток вызывает DoSomething с другим arg, изменит ли это значение someVar для всех потоков и, следовательно, DoSomething вернет вторую версию someArg при обоих вызовах, или для каждого потока будет существовать один someVar?

Edit Я думаю, что мое Action должно было быть Func, поэтому отредактировал его.

12
задан Juan 20 December 2011 в 02:47
поделиться