Лямбда-выражение, внешние переменные в многопоточности

Возьмем этот код:

public void Hit(int npage)
        {
            bool fetch = false;
            lock (pagesHit)
            {
                if (!pagesHit.Contains(npage))
                {
                    pagesHit.Add(npage);
                    fetch = true;
                }
            }
            if (fetch)
            {
                pageFiller.Completed += (s, e) =>
                    {
                        lock (pagesHit)
                        {
                            pagesHit.Remove(npage);
                        }
                    };
            }

        }

эта функция может вызываться из разных потоков. Очевидно, что цель состоит в том, чтобы избежать выборки страницы, которая уже запланирована для выборки. Объект filler выставляет событие, на которое подписывается через лямбда-выражение. Мой вопрос: можно ли сказать, что параметр npage правильно обрабатывается в многопоточном сценарии? Лучше: каждое событие подписки получает свой собственный параметр npage, или последний увиденный npage распространяется на все события?

6
задан Felice Pollano 11 October 2011 в 20:37
поделиться