我正在尝试使用isolate.addOnExitListener(...)跟踪隔离当前是否正在运行(以及将来是否出错)。但是,以下代码片段无法按我的预期工作:
items.forEach((name, item) async {
Isolate isolate = await Isolate.spawnUri(...);
item.status = "running";
ReceivePort receivePort = new ReceivePort();
isolate.addOnExitListener(receivePort.sendPort);
receivePort.listen((message){
if (message == null) {
print("Item exited: ${item.name}");
item.status = "stopped";
}
});
});
“items”映射包含 3 个值,每个值都有不同的名称:item1、item2、item3
当我运行此代码时,我得到的唯一输出是:“Item exited: item3”
我期望以下输出(不一定按顺序,因为隔离是异步的):“项目退出:项目 1”“项目退出:项目 2”“项目退出:项目 3”
这是在隔离区中运行的代码:
import 'dart:io';
main(List args) {
print('Hello world: standard out!');
stderr.writeln('Hello world: standard error!');
}
似乎关闭正在丢失。我在这里做错了吗?有没有更好的方法来跟踪隔离的状态?
提前致谢!