问题描述
以下程序在 EventLoopScheduler 上运行两个计划。
class Program
{
private static Dictionary<int,int> _dict = new Dictionary<int,int>();
private static Dictionary<int,int> _dict2 = new Dictionary<int,int>();
private static async Task test()
{
while (true)
{
foreach (var i in _dict)
{
_dict2[i.Key] = i.Value;
}
await Task.Delay(1000);
}
}
static async Task Main(string[] args)
{
var scheduler = new EventLoopScheduler();
var rnd = new Random();
scheduler.SchedulePeriodic(TimeSpan.FromMilliseconds(10),() =>
{
_dict[rnd.Next(0,10000)] = rnd.Next(10000);
});
scheduler.ScheduleAsync((s,ct) => test());
System.Console.ReadLine();
return;
}
据我所知,EventLoopScheduler 应该在单个线程上执行所有内容。但我得到了一个例外 foreach (var i in _dict) system.invalidOperationException: '集合已修改;枚举操作可能无法执行。 怎么可能?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)