Dart 如何结束隔离以及如何在隔离终止时获得通知 终止隔离
当我想结束在使用Dart 如何结束隔离以及如何在隔离终止时获得通知 终止隔离,dart,dart-async,dart-isolates,Dart,Dart Async,Dart Isolates,当我想结束在使用isolate.spawn()或isolate.spawnUri()创建的服务器上启动的隔离时 如何终止隔离 throw x在异常未捕获时终止隔离。 但我希望有一个更优雅的解决方案 隔离.kill()抛出未捕获错误:不支持的操作:kill 得到通知 我猜当没有更多的异步操作处于活动状态时,隔离将结束(类似于main),但我如何知道隔离是否已实际终止 当子隔离终止时,是否有方法通知父隔离? isolate.addOnExitListener(\u sendPort)抛出未捕获错误:
isolate.spawn()或isolate.spawnUri()创建的服务器上启动的隔离时
如何终止隔离
throw x
在异常未捕获时终止隔离。
但我希望有一个更优雅的解决方案
隔离.kill()
抛出未捕获错误:不支持的操作:kill
得到通知
我猜当没有更多的异步操作处于活动状态时,隔离将结束(类似于main
),但我如何知道隔离是否已实际终止
当子隔离终止时,是否有方法通知父隔离?
isolate.addOnExitListener(\u sendPort)代码>抛出未捕获错误:不支持的操作:addOnExitListener
?
是否有其他方法,或者我必须等待这些方法得到支持?来自
检测隔离被删除后终止的方法
成功创建的是使用Isolate.addOnExitListener(可能是
如果需要了解原因,请隔离.addErrorListener
终止)。启动隔离暂停,然后当未来
您可以设置侦听器,然后
继续隔离
所以我们有一种方法,它仍然不是由VM/Dartium实现的,而是
这是另一个问题
另见
为了澄清,您想让隔离A知道隔离B是否已关闭?而且,我们可能应该把这个问题分成两个独立的问题。主隔离A产生一个新的隔离B。完成Bs工作后,应该结束。A实际上并不需要通知,这只是为了验证结束隔离B的方法是否真的如预期的那样工作。@GünterZöchbauer是问题的第二部分,是关于类似于未来隔离.terminate()
?我认为,如果隔离没有处于无响应状态,它就不应该被外部终止。否则它会破坏封装,因为您的代码假定隔离B没有分配的资源(如DB连接、套接字等),应该正确释放这些资源。@JAre您当然是对的。我尝试子隔离体B向父隔离体a发送消息,通知它B已准备好被杀死,但不支持杀死。我在类或实例上找不到terminate。可能是@lrn可以帮助解决这个问题。