Cho phép lấy mã này:biểu Lambda, các biến bên ngoài trong multithread
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);
}
};
}
}
chức năng này có thể được gọi từ các chủ đề khác nhau. Mục tiêu rõ ràng là tránh tìm nạp một trang đã được lập lịch để tìm nạp. Đối tượng filler cho thấy một sự kiện được đăng ký thông qua một biểu thức lambda. Câu hỏi của tôi là: chúng ta có thể nói rằng tham số npage được xử lý chính xác trong kịch bản đa luồng không? tốt hơn: mỗi đăng ký sự kiện nhận được thông số npage riêng của mình hoặc lần xem npage mới nhất được truyền cho tất cả các sự kiện?