ConcurrentDictionary<string,ArrayList> AddOrUpdate 错误

ConcurrentDictionary<string,ArrayList> AddOrUpdate error

我偶然发现了以下障碍。我需要一个 ConcurrentDictionary ,它以字符串为键,以 ArrayList 为值。我想按以下方式使用 AddOrUpdate:

using System.Collections;
using System.Collections.Concurrent;

private ConcurrentDictionary<string, ArrayList> _data= new ConcurrentDictionary<string, ArrayList>();

private void AddData(string key, string message){
     _data.AddOrUpdate(key, new ArrayList() { message }, (string existingKey, string existingList) => existingList.Add(message));

}

但是此方法不起作用并抛出以下错误:

Compiler Error CS1661: Cannot convert anonymous method block to delegate type 'delegate type' because the specified block's parameter types do not match the delegate parameter types

link to error

总之,我正在尝试执行以下操作:

  1. 尝试将消息添加到 ConcurrentDictionary 中的数组列表。
  2. 如果 arraylist 不存在,请创建一个包含消息的新数组。
  3. 如果 arraylist 确实存在,只需将其添加到数组的末尾即可。

所以我的问题是,如何修复此错误并改进我的代码,我做错了什么?

正确的线程安全方式是:

using System.Collections;
using System.Collections.Concurrent;
using System.Collections.Generic;

private ConcurrentDictionary<string, List<string>> _data = new ConcurrentDictionary<string, List<string>();

private void AddData(string key, string message){
     var list = _data.GetOrAdd(key, _ => new List<string>());

     lock(list) 
     {
        list.Add(message);
     } 

}