2009-01-04 14 views

Odpowiedz

14

Tak, wrzucił je do IDictionary i blokady na .SyncRoot:

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

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

Dzięki tej source za info.

Oczywiście słownik wątkowy byłby również przyjemny, jak sugerowali inni.

+0

Ta odpowiedź została zaakceptowana, ale każdy, kto ją przeczyta, powinien również zapoznać się z tym na przykład: http://stackoverflow.com/questions/327654/hashtable-to-dictionary-syncroot. SyncRoot nie jest najlepszym sposobem blokowania kolekcji. – AFract

+0

Zdaję sobie sprawę, że ta odpowiedź jest stara. Chciałem tylko powiedzieć, że link jest już martwy. –

+0

Lepiej nie używać "SyncRoot", był to problem projektowy zespołu .net, zamiast tego użyj Lock (_lockObject). –

1

Możesz zablokować dowolny obiekt, który chcesz (z wyjątkiem typów wartości). Zaleca się jednak, aby zablokować obiekt .SyncRoot.