【问题标题】:Codename One: wait until a given boolean is true代号一:等到给定的布尔值为真
【发布时间】:2018-10-04 11:43:42
【问题描述】:

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

while (!myBoolean) {
    Util.sleep(100);
}

我怎样才能停止 EDT 内的执行流程(以正确的方式),直到给定的布尔值变为真?

【问题讨论】:

标签: codenameone


【解决方案1】:

简单的答案是:

invokeAndBlock(() -> {
    while (!myBoolean) {
       Util.sleep(100);
    }
});

更好的方法是:

timer = UITimer.schedule(100, true, () -> {
   if(myBoolean) {
      timer.cancel();
      runThisMethod();
   }
});

一个更复杂的问题是“为什么不添加一个监听器”?

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-03
    • 2020-01-05
    • 2012-05-06
    • 2015-04-01
    相关资源
    最近更新 更多