Change model from endless running background thread
As in the documentation suggested I tried to use a Task.Backgroundable (Progress indicators page). Since I make changes to the model I use an undoable action and made the following behavior method in my root node for testing:
Any ideas why the field i is not getting updated?
Thanks,
fxlex
public void increment(node<RootFile> selfReference) {
final node<RootFile> finalNode = selfReference;
Project project = ProjectHelper.toIdeaProject(ProjectHelper.getProject(finalNode.model/.getRepository()));
Task.Backgroundable backgrounable = new Task.Backgroundable(project, "My task", false) {
public void run(@NotNull() ProgressIndicator p0) {
final CyclicBarrier barrier = new CyclicBarrier(2);
finalNode.model/.getRepository().getModelAccess().executeCommandInEDT(new Runnable() {
public void run() {
try {
while (finalNode.i < 100) {
finalNode.i += 1;
}
} finally {
finalNode.block(barrier);
}
}
});
finalNode.block(barrier);
}
};
ApplicationManager.getApplication().invokeLater({ => ProgressManager.getInstance().run(backgrounable); });
}
public void block(CyclicBarrier barrier) {
try {
barrier.await();
} catch (BrokenBarrierException e) {
<no statements>
} catch (InterruptedException e) {
<no statements>
}
}
Any ideas why the field i is not getting updated?
Thanks,
fxlex
Please sign in to leave a comment.