我有以下代码:
Dictionary<string, WSResponse> responseDictionary = new Dictionary<string, WSResponse>();
List<Task> taskList = new List<Task>();
foreach (string ID in IDs)
{
string localID = ID;
Task newTask = Task.Factory.StartNew(() =>
{
WSResponse response = Query.GetListFor(localID);
responseDictionary.Add(localID, response);
});
taskList.Add(newTask);
}
Task.WaitAll(taskList.ToArray());
在运行此代码的服务器上,我们的 IT 团队有服务器监控软件,他们告诉我们该软件报告unsafe static Dictionary
正在传递一个。我的猜测是,当我在任务中使用字典时,字典作为不安全指针传递给任务线程。另一方面,我可能完全错了。我试图找到一些权威人士谈论这个,但失败了。谁能解释运行时在这种情况下的作用?
顺便说一句:无论如何我们都在Dictionary
换一个ConcurrentDictionary
,所以不需要报警。