2009-01-04 31 views

Trả lời

14

Vâng, đúc nó vào một IDictionary và khóa trên .SyncRoot:

Generic.Dictionary<int, int> dic = new Generic.Dictionary<int, int>(); 

lock (((IDictionary)dic).SyncRoot) 
{ 
    // code 
} 

Nhờ source này cho các thông tin.

Tất nhiên, từ điển an toàn theo chủ đề cũng sẽ đẹp, như những người khác đã đề xuất.

+0

Câu trả lời này đã được chấp nhận, nhưng bất kỳ ai đọc điều này cũng nên xem xét điều này ví dụ: http://stackoverflow.com/questions/327654/hashtable-to-dictionary-syncroot. SyncRoot không phải là cách tốt nhất để khóa các bộ sưu tập. – AFract

+0

Tôi nhận ra câu trả lời này là cũ. Chỉ muốn nói với bạn rằng liên kết đã chết. –

+0

Tốt hơn là không sử dụng "SyncRoot", đó là vấn đề thiết kế của nhóm .net, sử dụng Khóa (_lockObject) để thay thế. –

1

Bạn có thể khóa trên bất kỳ đối tượng nào bạn muốn (ngoại trừ loại giá trị). Đó là được đề xuất mặc dù khóa trên đối tượng .SyncRoot.

Các vấn đề liên quan