有没有办法杀死计算函数创建的任务?

Is there a way to kill tasks created by the compute function?

我知道 compute function is based on the Isolate API。对于Isolate,可以通过调用islate对象的kill方法请求关闭lsolate。

compute 函数可以手动关闭 Isolate 运行 这个任务吗?

没有

无法杀死compute function

为什么

原因是查看 the source code of the compute function,创建的 isolate 仅在 result 完成者完成后被杀死:

final Completer<R> result = Completer<R>();
...
await result.future;
...
isolate.kill(); // Always awaits the result.

仅当出现错误或您传递给 compute 的函数时,结果才会完成 returns。


此外,您没有访问isolate您自己因为它是 created inside of the compute function.

解决方案

如果您希望能够终止您启动的隔离,请不要使用 compute。相反,您必须自己创建 Isolate