могу ли я тогда быть уверен, что значение параметра состояния является значением
возвращается GetState () до отправки или будет оптимизирована временная переменная состояния> вдали
Нет state
не будет оптимизирован.
Тем не менее, До на самом деле самая сложная часть этого вопроса. Пока вы не меняете переменную состояния после (в той же области видимости), вам не о чем беспокоиться.
{
// say GetState returns 2
var state = GetState();
// state now = 2
Dispatcher.BeginInvoke(() => StateChanged(state));
state = 3;
}
В коде выше state
не будет оптимизирован. Это не означает, однако, что StateChanged
будет вызываться со значением 2. Это может быть 3, если рабочий поток завершает выполнение перед запуском потока диспетчера.
Суть в том, что захват переменной обеспечивает сохранение значения для использования замыкания, но это не означает, что значение является неизменным.