/// <summary> /// Remove a key from the list /// </summary> /// <param name="key">The key</param> public async Task RemoveKeyAsync(object key) { using (await _lock.LockAsync().ConfigureAwait(false)) { var checkKey = new TableKey <T, TKey>((TKey)key, _resolver); if (!_keyList.Contains(checkKey)) { return; } _keyList.Remove(checkKey); _keyMap.Remove((TKey)key); IsDirty = true; } }
/// <summary> /// Add a key to the list /// </summary> /// <param name="key">The key</param> public async Task <int> AddKeyAsync(object key) { using (await _lock.LockAsync().ConfigureAwait(false)) { var newKey = new TableKey <T, TKey>((TKey)key, _resolver); if (!_keyList.Contains(newKey)) { _keyList.Add(newKey); _keyMap.Add((TKey)key, NextKey++); IsDirty = true; } else { var idx = _keyList.IndexOf(newKey); _keyList[idx].Refresh(); } } return(_keyMap[(TKey)key]); }