Сделать переменные, захваченные замыканием, изменчивыми

Как переменные, захваченные замыканием, взаимодействуют с разными потоками? В следующем примере кода я хотел бы объявить totalEvents как изменчивый, но C # не позволяет этого.

(Да Я знаю, что это плохой код, это просто пример)

private void WaitFor10Events()
{
     volatile int totalEvents = 0; // error CS0106:

     _someEventGenerator.SomeEvent += (s, e) => totalEvents++;

     while(totalEvents < 10)
        Thread.Sleep(100);
}

РЕДАКТИРОВАТЬ : Люди, кажется, немного упускают суть моего вопроса. Я знаю, что не могу использовать volatile в локальных варах . Я также знаю, что код примера плохой и может быть реализован другими способами, отсюда и мой отказ от ответственности за «плохой код». Это было просто для иллюстрации проблемы.

В любом случае, похоже, что нет способа заставить изменчивая семантика для захваченных локальных переменных, поэтому я буду реализовывать другой способ. Тем не менее, спасибо за ответы, я все равно узнал пару полезных вещей. :)

13
задан GazTheDestroyer 23 February 2012 в 13:28
поделиться