Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Codenameone 代码名1:等待给定的布尔值为真_Codenameone - Fatal编程技术网

Codenameone 代码名1:等待给定的布尔值为真

Codenameone 代码名1:等待给定的布尔值为真,codenameone,Codenameone,我需要等到给定的布尔值为真。该布尔值由侦听器更新。所有代码都在EDT内,因此以下内容不适用: while (!myBoolean) { Util.sleep(100); } 如何停止EDT内部的执行流(以正确的方式),直到给定的布尔值变为真?简单的答案是: invokeAndBlock(() -> { while (!myBoolean) { Util.sleep(100); } }); 更好的办法是: timer = UITimer.schedu

我需要等到给定的布尔值为真。该布尔值由侦听器更新。所有代码都在EDT内,因此以下内容不适用:

while (!myBoolean) {
    Util.sleep(100);
}
如何停止EDT内部的执行流(以正确的方式),直到给定的布尔值变为真?

简单的答案是:

invokeAndBlock(() -> {
    while (!myBoolean) {
       Util.sleep(100);
    }
});
更好的办法是:

timer = UITimer.schedule(100, true, () -> {
   if(myBoolean) {
      timer.cancel();
      runThisMethod();
   }
});
一个更复杂的问题是“为什么不添加一个侦听器”


既然布尔值是从一个监听器更改而来的,为什么不在触发它的监听器之后添加一个监听器并在那里执行工作呢?

我解决了更改代码逻辑的问题,但是如果监听器中有一些代码应该等待给定变量更改其状态,那么这是一个普遍的问题。