Dart 如何不使用线程

Dart 如何不使用线程,dart,stagexl,Dart,Stagexl,这是一个关于如何在dart中执行“多线程”的dart新手问题 (对不起,我是一名老java开发人员…) 因此,我有这类代码(见下文se),但由于重新创建gui的成本很高,我想推迟它,因此,我不想在_onWindowResize()中重新创建gui,而是希望启动一个线程,在大小稳定一段时间后执行此操作。例如,一秒钟 如果线程已经启动,则不执行任何操作。(顺便说一句,StageXL很酷……) (这也将修复dart:html调用两次_onWindowResize()的错误…) 。。。 listen((

这是一个关于如何在dart中执行“多线程”的dart新手问题

(对不起,我是一名老java开发人员…)

因此,我有这类代码(见下文se),但由于重新创建gui的成本很高,我想推迟它,因此,我不想在_onWindowResize()中重新创建gui,而是希望启动一个线程,在大小稳定一段时间后执行此操作。例如,一秒钟

如果线程已经启动,则不执行任何操作。(顺便说一句,StageXL很酷……)

(这也将修复dart:html调用两次_onWindowResize()的错误…)

。。。
listen((e)=>\u onWindowResize());
}
_createGui(){
var shape=新形状();
shape.graphics.ellipse(html.window.innerWidth/2、html.window.innerHeight/2、html.window.innerWidth/4、html.window.innerHeight/4);
形状。图形。填充颜色(颜色。红色);
阶段。添加儿童(形状);
}
void _onWindowResize(){
打印(“新窗口大小${html.window.innerWidth}x${html.window.innerHeight}”);
舞台=新舞台(“舞台”,画布);
stage.scaleMode=StageScaleMode.NO_SCALE;
stage.align=StageAlign.TOP\u左;
renderLoop=新renderLoop();
renderLoop.addStage(stage);
juggler=renderLoop.juggler;
_createGui();
}

您可以通过向Dart中的其他线程发送工作,但这不适用于您的场景,因为它主要是关于修改应用程序的UI

不能在Dart(或一般使用WebWorkers)中的隔离区之间共享对象。因此,您不能将画布传递到一个隔离中来创建stage、renderloop等


如果您正在进行复杂的计算(例如物理计算),那么将这些计算结果发送到隔离区并使用结果更新UI可能是有意义的。

注意:这是一个糟糕的示例,因为我发现stagexl或多或少为我做了这件事。。。但无论如何,这个问题是一般性的。