exit 静态方法
以同步方式终止当前隔离。
此操作可能非常危险,应谨慎使用。隔离将立即停止操作。如果可选的 message
不符合从一个隔离器发送到另一个隔离器的限制(请参阅 SendPort.send 了解更多详情),则会抛出异常。如果 finalMessagePort
与当前隔离器组之外的隔离器(通过 spawnUri 创建)相关联,也会抛出异常。
如果成功执行,此方法的调用不会返回。挂起的 finally
块不会被执行,控制流不会返回到事件循环,安排的异步调用永远不会运行,甚至挂起的隔离器控制命令也可能被忽略。(隔离器将通过 Isolate.addOnExitListener 向注册的端口发送消息,但在隔离器中不会运行任何更多的 Dart 代码。)
如果提供了 finalMessagePort
,并且 message
可以通过它发送(请参阅 SendPort.send 了解更多详情),则该消息将通过该端口作为当前隔离的最终操作发送。在 SendPort.send 调用返回后,隔离器将立即终止。
如果端口是本地端口(由 ReceivePort.sendPort 或 RawReceivePort.sendPort 提供),则系统可能比正常活动隔离器之间的端口通信更有效地发送此最终消息。在这些情况下,最终消息对象图将在不复制的情况下分配给接收隔离器。此外,接收隔离器在大多数情况下将能够在常数时间内接收到消息。
实现
external static Never exit([SendPort? finalMessagePort, Object? message]);