I have a static dictionary in a multi thread application. class A Reads the dictionary and class B Removes from it. I want to lock dictionary when removing from it or reading fr
You could use a ConcurrentDictionary
as pwas suggests. If you want to synchronise the dictionary that you have, you use the lock
keyword.
You should generally use a separate object for the synchronising, and don't expose that object outside your scope. That ensures that code outside the block can't use the same object for locks and cause conflicts.
public static Dictionary DicThreads = new Dictionary();
private static object sync = new Object();
Class A() {
private void MethodA() {
lock (sync) {
if (DicThreads.ContainsKey(key)) {
if (DicThreads[key] == null || DicThreads[key].ThreadState == ThreadState.Stopped) {
//--- Do something
}
}
}
}
}
class B {
private void MethodB() {
lock (sync) {
DicThreads.Remove(key)
}
}
}