gpt4 book ai didi

java - 进度条仅在 Debug模式下显示。作业加异步显示

转载 作者:行者123 更新时间:2023-12-02 07:59:49 27 4
gpt4 key购买 nike

 Job job = new Job("Initialize Info ") 
{

@Override
protected IStatus run(IProgressMonitor monitor) {
//some action in job thread

Display.getDefault().asyncExec(new Runnable() {

@Override
public void run() {
//
//different actions with UI components.
}
});
return Status.OK_STATUS;
}
};
job.schedule();

当我在 Debug模式下运行应用程序时,进度条会正确显示,并且所有 UI 组件都在等待作业。但在 Release模式下,UI 组件仍在等待作业,但进度条没有反射(reflect)。

原因是什么?

最佳答案

您不需要运行asycExec。尝试使用UIJob:
UIJob 是通过 asyncExec 在 UI 线程中运行的作业。
像这样:

Job job = new Job("") {

@Override
protected IStatus run(IProgressMonitor monitor) {
monitor.beginTask("Task..." -1);
// do what i need to do (and doesn't bother my UI)
return Status.OK_STATUS;
}
};

job.setUser(true);
job.schedule();
job.addJobChangeListener(new JobChangeAdapter() {
@Override
public void done(IJobChangeEvent event) {
new UIJob("") {

@Override
public IStatus runInUIThread(IProgressMonitor monitor) {
// Update my UI
monitor.beginTask("UI Task..." -1);
return Status.OK_STATUS;
}
}.schedule();
super.done(event);
}
});

关于java - 进度条仅在 Debug模式下显示。作业加异步显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9063932/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com