如何在后台任务循环中使代码 运行 一次?
How to make code run once inside background task looping?
我有一个后台任务循环看起来像这样:
Timeline fiveSecondsWonder = new Timeline(new KeyFrame(Duration.seconds(1), event -> {
if (hourNow >= cashCutOff_Start && hourNow <= cashCutOff_End - 1) {
//Run the code once
}
}));
fiveSecondsWonder.setCycleCount(Timeline.INDEFINITE);
fiveSecondsWonder.play();
此代码确实每隔一秒循环一次。但是我想在这段代码 运行 后使一行代码可执行。
简单的两步解决。
创建一个布尔变量:
private boolean hasRun = false;
在您的时间轴中添加 if 语句:
Timeline fiveSecondsWonder = new Timeline(new KeyFrame(Duration.seconds(1), event -> {
//check if code has run before
if(!hasRun){
//this will run only once
//by setting hasRun = true;
hasRun=true;
//add your code here...
}
//this code will run in every KeyFrame
//add your code here...
}));
fiveSecondsWonder.setCycleCount(Timeline.INDEFINITE);
fiveSecondsWonder.play();
只需删除 fiveSecondsWonder.setCycleCount(Timeline.INDEFINITE);
我有一个后台任务循环看起来像这样:
Timeline fiveSecondsWonder = new Timeline(new KeyFrame(Duration.seconds(1), event -> {
if (hourNow >= cashCutOff_Start && hourNow <= cashCutOff_End - 1) {
//Run the code once
}
}));
fiveSecondsWonder.setCycleCount(Timeline.INDEFINITE);
fiveSecondsWonder.play();
此代码确实每隔一秒循环一次。但是我想在这段代码 运行 后使一行代码可执行。
简单的两步解决。
创建一个布尔变量:
private boolean hasRun = false;
在您的时间轴中添加 if 语句:
Timeline fiveSecondsWonder = new Timeline(new KeyFrame(Duration.seconds(1), event -> {
//check if code has run before
if(!hasRun){
//this will run only once
//by setting hasRun = true;
hasRun=true;
//add your code here...
}
//this code will run in every KeyFrame
//add your code here...
}));
fiveSecondsWonder.setCycleCount(Timeline.INDEFINITE);
fiveSecondsWonder.play();
只需删除 fiveSecondsWonder.setCycleCount(Timeline.INDEFINITE);