gpt4 book ai didi

Dart 程序没有退出

转载 作者:行者123 更新时间:2023-12-05 01:54:23 28 4
gpt4 key购买 nike

我无法找到为什么我的 dart 程序没有终止。我很确定这与隔离或流 Controller 有关,并确保它们已关闭,但我无法确定问题所在。

在我所有的 StreamController 上,我正在调用 await streamControllerName.close();,但我认为有一个我不知道的隔离关闭机制关于。是否有任何原因导致事件循环没有完成,所以程序没有退出?由于代码很长,因此很难提供更多细节。

最佳答案

当 main isolate 无事可做时(因此没有代码正在执行,事件或微任务队列中也没有事件)并且没有任何订阅可以将事件生成到 main isolate 时,Dart 程序停止。

此外Timer可以产生延迟事件,我们有 ReceivePort这允许我们将事件从另一个隔离区发送到一个隔离区。应该注意的是,Dart 不会跟踪 ReceivePort 之间的关系。和 SendPort指向那个 ReceivePort 的实例.

这意味着 Dart 不知道何时 ReceivePort不再“使用”,因此由开发人员确保关闭任何打开的 ReceivePort通过调用 close()每个实例上的方法(注意 SendPort 没有任何 close() 方法)当它们不再被使用时。

只要有打开的ReceivePort在 main isolate 中,程序将继续运行,因为可能会从这些 ReceivePort 之一中产生一个事件实例。

关于Dart 程序没有退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70670402/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com