【问题标题】:Kill an isolate started with compute in flutter在颤动中杀死一个以计算开始的隔离
【发布时间】:2022-06-13 05:25:17
【问题描述】:

我试图在单独的进程中运行繁重的计算(通过使用compute),以免阻塞 UI。我的问题是计算取决于屏幕上的项目,因此它们需要与视图一起更改。我认为我可以做的是使用 compute 开始计算。这样做的问题是,如果视图发生变化,上次开始的计算将毫无用处,所以我想尽快停止它们。

这是函数占位符:

double computeValue(int? value) {
double sum = 0.0;
  int index = 0;
  int count = 20000000;
  
  while(index < count){
    sum += Random().nextDouble();
    index++;
  }
  print("Finished Computation!");
  return sum / count;
}

如果我在触摸时运行此功能,一切正常,UI 不会冻结,大约 5 秒后我会得到结果。我的问题是,如果我在第一个功能完成运行之前再次触摸按钮,它将运行完成 2 次。我尝试使用Isolate.spawn 代替compute 并使用Isolate.kill 杀死隔离,然后再次生成它,但它仍然运行到完成两次。有没有办法可以成功停止我用Isolate.spawncompute 调用的方法?

【问题讨论】:

    标签: flutter dart isolate


    【解决方案1】:

    我认为您想禁用该按钮,直到您从计算功能获得结果并再次启用它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-23
      • 2013-02-10
      • 1970-01-01
      • 2013-08-05
      相关资源
      最近更新 更多