gpt4 book ai didi

java - 在 Eclipse RCP 4 应用程序中查找现有作业

转载 作者:行者123 更新时间:2023-12-02 06:42:44 24 4
gpt4 key购买 nike

我的 eclipse RCP (e4) 应用程序中有一些长时间运行的任务,这些任务是使用 Job API 实现的。作业立即启动(在 GUI 显示之前)。

private class MyJob extends Job {

@Override
protected IStatus run(IProgressMonitor monitor) {
monitor.beginTask("do some long stuff", 4);

doStep1();
monitor.worked(1);
doStep2();
monitor.worked(1);
doStep3();
monitor.done();
}
// methods for the steps follow here
}

现在我想在 GUI 中的某处显示进度条,以显示 MyJob 是否仍在运行。

我已经使用 IJobManager 尝试过此操作:

public class MyStatusbar {
private ProgressBar progressBar;

@Inject
UISynchronize sync;

@PostConstruct
public void createControls(Composite parent) {
progressBar = new ProgressBar(parent, SWT.SMOOTH);
progressBar.setBounds(100, 10, 200, 20);

// Setting the progress monitor
IJobManager manager = Job.getJobManager();

final IProgressMonitor p = (IProgressMonitor) new IProgressMonitor() {

@Override
public void worked(final int work) {
sync.syncExec(new Runnable() {
@Override
public void run() {
System.out.println("Worked");
progressBar.setSelection(progressBar.getSelection()
+ work);
}
});
}

// [...]
};
ProgressProvider provider = new ProgressProvider() {
@Override
public IProgressMonitor createMonitor(Job job) {
return p;
}
};

manager.setProgressProvider(provider);
}
}

但是我的工作没有显示在状态栏中。我想这与我在 GUI 出现之前开始工作有关,但我不确定。

所以我有两个问题:

  1. 我做错了什么?
  2. 我的方法正确吗?或者有更好的方法吗?

最佳答案

您确实需要在 Job 启动之前创建进度监视器并调用 IJobManager.setProgressProvider(即调用 ProgressProvider.createMonitor 时) )。

我在 LifeCycle 类的 @PostContextCreate 方法中设置了进度提供程序。

关于java - 在 Eclipse RCP 4 应用程序中查找现有作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18984495/

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