Возьмем этот код:
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 распространяется на все события?