有没有办法杀死计算函数创建的任务?
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
。
我知道 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
。