Isolatefinal

一个独立的 Dart 执行上下文。

所有 Dart 代码都在隔离中运行,并且代码只能访问来自同一隔离的类和值。不同的隔离可以通过通过端口发送值(参见 ReceivePortSendPort)进行通信。

一个 Isolate 对象是对隔离的引用,通常不同于当前隔离。它表示其他隔离,并可用于控制其他隔离。

当启动新的隔离时,如果启动操作成功,启动隔离会收到一个表示新隔离的 Isolate 对象。

隔离在其自己的事件循环中运行代码,每个事件都可以在嵌套的微任务队列中运行更小的任务。

Isolate 对象允许其他隔离控制它所代表的隔离的事件循环,并检查隔离,例如通过暂停隔离或当隔离有未捕获的错误时获取事件。

controlPort 识别并提供对控制隔离的访问,pauseCapabilityterminateCapability 保护对一些控制操作的访问。例如,在没有 pauseCapability 的情况下创建的 Isolate 对象上调用 pause,没有效果。

由启动操作提供的 Isolate 对象将具有控制隔离所需的控制端口和功能。如果需要,可以使用 Isolate.new 构造函数创建不包含这些功能的新隔离对象。

Isolate 对象不能通过 SendPort 发送,但控制端口和功能可以发送,并且可以在接收端口的隔离中用于创建一个新的功能齐全的 Isolate 对象。

构造函数

Isolate(SendPort controlPort, {Capability? pauseCapability, Capability? terminateCapability})
创建一个具有有限功能集的新 Isolate 对象。

属性

controlPort SendPort
用于向隔离发送控制消息的控制端口。
final
debugName String?
用于调试目的显示的 Isolate 名称。
没有设置器
errors Stream
返回隔离中未捕获错误的广播流。
没有设置器
hashCode int
此对象的哈希码。
没有设置器继承
pauseCapability Capability?
授予暂停隔离的能力的能力。
final
runtimeType Type
对象运行时类型的表示。
没有设置器继承
terminateCapability Capability?
授予终止隔离器的能力。
final

方法

addErrorListener(SendPort port) → void
请求将隔离器未捕获的错误发送回 port
addOnExitListener(SendPort responsePort, {Object? response}) → void
在隔离器终止时,请求在 responsePort 上发送退出消息。
kill({int priority = beforeNextEvent}) → void
请求隔离器关闭。
noSuchMethod(Invocation invocation) → dynamic
在访问不存在的方法或属性时调用。
继承
pause([Capability? resumeCapability]) Capability
请求隔离器暂停。
ping(SendPort responsePort, {Object? response, int priority = immediate}) → void
请求隔离器在 responsePort 上发送 response
removeErrorListener(SendPort port) → void
停止监听隔离器未捕获的错误。
removeOnExitListener(SendPort responsePort) → void
停止监听隔离器的退出消息。
resume(Capability resumeCapability) → void
恢复已暂停的隔离器。
setErrorsFatal(bool errorsAreFatal) → void
设置是否未捕获的错误将终止隔离。
toString() String
该对象的字符串表示形式。
继承

运算符

operator ==(Object other) bool
等号运算符。
继承

静态属性

current Isolate
表示当前隔离的Isolate对象。
没有设置器
packageConfig Future<Uri?>
当前隔离的包配置文件的位置。
没有设置器
packageConfigSync Uri?
当前隔离的包配置文件的位置。
没有设置器

静态方法

exit([SendPort? finalMessagePort, Object? message]) → Never
同步终止当前隔离。
resolvePackageUri(Uri packageUri) Future<Uri?>
package: URI解析为其实际位置。
resolvePackageUriSync(Uri packageUri) Uri?
package: URI解析为其实际位置。
run<R>(FutureOr<R> computation(), {String? debugName}) Future<R>
在一个新隔离中运行computation并返回结果。
spawn<T>(void entryPoint(T message), T message, {bool paused = false, bool errorsAreFatal = true, SendPort? onExit, SendPort? onError, String? debugName}) Future<Isolate>
创建并启动一个与当前隔离进程共享相同代码的新隔离进程。
spawnUri(Uri uri, List<String> args, dynamic message, {bool paused = false, SendPort? onExit, SendPort? onError, bool errorsAreFatal = true, bool? checked, Map<String, String>? environment, Uri? packageRoot, Uri? packageConfig, bool automaticPackageResolution = false, String? debugName}) Future<Isolate>
创建并启动一个运行指定URI库中代码的新隔离进程。

常量

beforeNextEvent → const int
pingkill 的参数:在下一个事件之前请求操作。
immediate → const int
pingkill 的参数:请求立即执行操作。