gpt4 book ai didi

eclipse-plugin - Eclipse 作业 API : how to track progress for job scheduled by another job?

转载 作者:行者123 更新时间:2023-12-04 04:27:15 24 4
gpt4 key购买 nike

为计划和加入另一个 Eclipse 作业的 Eclipse 作业使用进度监视器的正确方法是什么?我希望子任务与主任务相关联。

理想情况下,我希望能够告诉子任务使用从主监视器创建的 SubProgressMonitor 运行,但是我没有找到执行此操作的方法。我查看了 Job.setProgressGroup(..., ...) 方法,但文档指出应该使用 IJobManager.createProgressGroup() 创建该组.

这里是上下文的代码片段:

@Override
protected IStatus run(final IProgressMonitor monitor) {
try {
monitor.beginTask("My Job A", 100);

MyJobB subtask = new MyJobB();

// how how should subtask's progress be tracked?
subtask.schedule();
subtask.join();

return Status.OK_STATUS;

} catch (Exception ex) {
// return error status
} finally {
monitor.done();
}
}

最佳答案

要回答原始问题 - 您可以这样做:

public class MyJobA extends Job {

private IProgressMonitor pGroup = Job.getJobManager().createProgressGroup();

public MyJobA() {
super("My Job A");
setProgressGroup(pGroup, 50);
}

@Override
protected IStatus run(IProgressMonitor monitor) {
MyJobB subtask = new MyJobB();
subtask.setProgressGroup(pGroup, 50);

pGroup.beginTask("My Jobs", 100);
try {
monitor.beginTask("My Job A", 10);
try {
// do work
monitor.worked(...);
} finally {
monitor.done();
}

subtask.schedule();
subtask.join();
} finally {
pGroup.done();
}
return Status.OK_STATUS;
}
}

如果你在外部创建进度组会更优雅一些:

    IProgressMonitor group = Job.getJobManager().createProgressGroup();
try {
group.beginTask("My Tasks", 200);

MyJobB b = new MyJobB();
b.setProgressGroup(group, 100);
b.schedule();

MyJobC c = new MyJobC();
c.setProgressGroup(group, 100);
c.schedule();

b.join();
c.join();
} finally {
group.done();
}

请注意,尚未安排的工作将显示为“已完成”:

ProgressView

如果可能,我会考虑合并这两个工作并使用 SubMonitor .

关于eclipse-plugin - Eclipse 作业 API : how to track progress for job scheduled by another job?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14530200/

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