我無法追查為什么我的飛鏢程式沒有終止。我很確定這與隔離或流控制器有關,并確保它們已關閉,但我無法解決問題所在。
在我所有的StreamController電話上await streamControllerName.close();,但我認為有一個我不知道的隔離關閉機制。是否有任何原因導致事件回圈沒有完成并且程式沒有退出?由于代碼很長,很難提供更多細節。
uj5u.com熱心網友回復:
當主隔離無事可做時(因此沒有代碼正在執行并且事件或微任務佇列上沒有事件)并且沒有訂閱可以將事件生成到主隔離中,Dart 程式停止。
除了Timer可以產生延遲事件之外,我們還ReceivePort可以將事件從另一個隔離區發送到隔離區。應該注意的是,Dart 不會跟蹤 aReceivePort和SendPort指向它的實體之間的關系ReceivePort。
這意味著 Dart 不知道什么時候 aReceivePort不再“使用中”,因此開發人員可以ReceivePort 通過close()在每個實體上呼叫方法來確保關閉任何打開(注意SendPort沒有任何close()方法),當它們不再是正在使用。
只要ReceivePort主隔離中有任何打開,程式就會繼續運行,因為可能會從這些ReceivePort實體之一產生事件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/408817.html
標籤:
上一篇:用戶注冊后未創建FS檔案
