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]);