list - 未处理的异常:迭代期间的并发修改:“_GrowableList”的实例(长度:1)
问题描述
我将全局变量jobModelList
声明为:
late List<JobModel> jobModelList = <JobModel>[];
我有获取数据并填充jobModelList
数据的 http 处理程序。
main() async {
scanParserProcesses();
app.get('/get-jobs-status', (req, res) async {
print("get-jobs-status");
var result = jobModelList.map((e) => e.toJson()).toList();
res.json({'data': result});
});
app.post('/update-jobs-status', (req, res) async {
print("update-jobs-status");
JobModel job = JobModel.fromJson(req.body);
jobModelList.removeWhere((element) => element.jobPid == job.jobPid);
jobModelList.removeWhere((element) => element.jobNumbers.toString() == job.jobNumbers.toString());
jobModelList.add(job);
res.json({'data': 'Parser status updated'});
});
我需要定期扫描模型并删除悬挂过程。
scanParserProcesses() {
Timer.periodic(Duration(seconds:5), (Timer t) async {
for(var job in jobModelList) {
if(job.lastPingDate!.isBefore(DateTime.now().subtract(Duration(minutes: 5))) ) {
job.parserStatus = ParserStatus.idle;
if(job.isMiddlewareAlive ?? false ) {
if(job.lastPingDate!.isBefore(DateTime.now().subtract(Duration(minutes: 30))) ) {
print("Next PID: ${job.jobPid} is hangs and will be restarted");
job.parserStatus = ParserStatus.hanging;
}
}
}
}
});
removeDeadInstances();
}
removeDeadInstances() {
jobModelList.removeWhere((element) => element.parserStatus == ParserStatus.hanging );
}
但我会定期收到错误:
Unhandled exception: Concurrent modification during iteration: Instance(length:1) of '_GrowableList'.
而且我不明白如何解决它。
解决方案
推荐阅读
- html - css中略微弯曲的底部div
- python - 将 Pandas 频率更改为非时间元素
- telegram - 固定消息可以有内联按钮吗?
- c++ - boost:如何在给定 ptime 之前休眠当前线程?
- c# - 使用 payu-custom-browser Xamarin Android 绑定库时出现运行时错误说 CBActivity:您需要使用 Theme.AppCompat 主题
- javascript - 如何在 Eclipse 控制台中对终止事件(红色按钮)执行操作?
- entity-framework-core - Ef core Ownsone 问题“正在共享餐桌”
- email - Microsoft Office 365 范围活动 - Office365message 获取邮件主题
- python - 无法在 jupyter notebook 中导入已安装的包
- kubernetes - 使用 kubernetes 执行程序时,如何在气流中将 PVC 与工作舱绑定?