如果将新的键\值对添加到静态字典中,我想在其他线程中执行某些操作.一种天真的方法是以频繁的间隔进行轮询,并检查ContainsKey(givenKey),但我想更快,而不是延迟轮询.
你必须创建自己的字典.最佳做法是:
public enum Type
{
AddItem,
RemoveItem
}
public class DictChangedEventArgs<K, V> : EventArgs
{
public Type Type
{
get;
set;
}
public K Key
{
get;
set;
}
public V Value
{
get;
set;
}
}
public class OwnDict<K, V> : IDictionary<K, V>
{
public delegate void DictionaryChanged(object sender, DictChangedEventArgs<K, V> e);
public event DictionaryChanged OnDictionaryChanged;
private IDictionary<K, V> innerDict;
public OwnDict()
{
innerDict = new Dictionary<K, V>();
}
public void Add(K key, V value)
{
if (OnDictionaryChanged != null)
{
OnDictionaryChanged(this, new DictChangedEventArgs<K, V>() { Type = Type.AddItem, Key = key, Value = value });
}
innerDict.Add(key, value);
}
// ...
// ...
}
Run Code Online (Sandbox Code Playgroud)
现在,您可以自由创建活动Before-Add-Item,After-Add-Item.您还可以Handled向DictChangedEventArgs-Class 添加一些参数,以防止添加特殊项目.您还可以决定使用Type-Enum或为每个操作创建自己的事件.
但是可以肯定的是,你必须实现所有方法IDictionary,但这应该很容易.