5

如何在单个 UI 中显示多个连续作业?

我的用例如下:

  1. 用户操作
  2. 开始第一个作业(未知长度)
  3. 等待第一个作业完成并开始第二个作业(已知长度)
  4. 等待第二个作业完成并开始第三个作业(已知长度)

我想通过以下方式向用户展示:

  1. 有一个没有全局进度条的主“用户操作”对话框(因为第一个作业未知并且在执行长度上确实可变,我无法获得准确的总长度)
  2. 在此对话框中,每个作业有 3 个子部分,每个作业都有一个进度条,IProgressMonitor.UNKNOWN第一个作业的样式当然也有。
  3. 在此对话框中,进度条将作为基础作业按顺序更新。

这将允许最终用户立即看到它的动作被分成了 3 个子任务(这些子任务对最终用户有意义)并且每次启动一个新的子任务时他都可以看到这个子任务的长度(当然第一个未知)。

经过多次搜索,我无法实现这一点,今天我将这 3 个子任务报告为 3 个单独的连续对话,其缺点是最终用户最初可能认为他的操作将在第一个未知子任务结束时完成-任务。

4

2 回答 2

3

您不能实现自己的调度规则来控制作业的执行顺序,并在第一个作业正在执行时有效地阻止第二个作业,而在第二个作业正在运行时阻止第三个作业?

查看http://www.eclipse.org/articles/Article-Concurrency/jobs-api.html了解详细信息和代码片段。

从上面的文章:

任何时候获取调度规则时,该线程的执行都可能被阻止,直到可以获取该规则为止。在这种情况下,用户将受益于看到一个对话框,该对话框显示正在运行的任务的进度,并在任务被其他任务阻止时提供反馈。

虽然我自己没有实现这个,但我在 Eclipse 中看到了这个。例如,当工作台保存其状态,而项目仍在构建时,Eclipse 正在报告构建进度,同时阻塞状态持久性作业,直到构建完成。它将作业显示为同一对话框中的单独条目,并清楚地表明第二个作业被第一个作业阻止。

于 2011-09-07T23:02:59.523 回答
0

为什么不把一个进程栏分成三部分。第一个工作的第一个三分之一,然后是第二个和第三个。

总之很简单!:)

于 2011-09-06T15:22:01.920 回答