5

1つのUIに複数の連続したジョブを表示するにはどうすればよいですか?

私のユースケースは次のとおりです。

  1. ユーザーアクション
  2. 最初のジョブを開始します(長さは不明)
  3. 最初のジョブが終了するのを待って、2番目のジョブを開始します(既知の長さ)
  4. 2番目のジョブが終了するのを待って、3番目のジョブを開始します(既知の長さ)

これを次のようにユーザーに表示したいと思います。

  1. グローバルプログレスバーのないメインの[ユーザーアクション]ダイアログがあります(最初のジョブは不明であり、実行の長さによって実際に変動するため、正確な全長を取得できません)
  2. このダイアログには、ジョブごとに1つずつ、このジョブごとに1つのプログレスバーがありIProgressMonitor.UNKNOWN、最初のジョブのスタイルでコース外の3つのサブパートがあります。
  3. このダイアログでは、進行状況バーが基になるジョブとして順番に更新されます。

これにより、エンドユーザーはそのアクションが3つのサブタスクに分割されていることをすぐに確認でき(サブタスクはエンドユーザーにとって意味があります)、新しいサブタスクが開始されるたびに、このサブタスクの長さを確認できます。 (もちろん最初は不明です)。

多くの検索の後、私はそれを実装できませんでした。今日、これらの3つのサブタスクを3つの個別の連続したダイアログとして報告していますが、エンドユーザーは最初に自分のアクションが最初の不明なサブの終わりに完了すると考える可能性があるという欠点があります。 -タスク。

4

2 に答える 2

3

独自のスケジューリングルールを実装して、ジョブの実行順序を制御し、最初のジョブの実行中に2番目のジョブを効果的にブロックし、2番目のジョブの実行中に3番目のジョブを効果的にブロックすることはできませんか?

詳細とコードスニペットについては、http: //www.eclipse.org/articles/Article-Concurrency/jobs-api.htmlを参照してください。

上記の記事から:

スケジューリングルールが取得されるたびに、ルールが取得されるまでそのスレッドの実行がブロックされる可能性があります。このような状況では、実行中のタスクの進行状況を示し、タスクが他のタスクによってブロックされている場合にフィードバックを提供するダイアログが表示されると、ユーザーはメリットがあります。

私はこれを自分で実装していませんが、Eclipseでこれを見ました。たとえば、プロジェクトのビルド中にワークベンチが状態を保存している場合、Eclipseはビルドの進行状況を報告し、ビルドが完了するまで状態永続化ジョブをブロックします。同じダイアログ内にジョブを個別のエントリとして表示し、2番目のジョブが最初のジョブによってブロックされていることを明確にします。

于 2011-09-07T23:02:59.523 に答える
0

1つのプロセスバーを3つの部分に分割してみませんか。最初のジョブの最初の3分の1、次に2番目と3番目。

とにかく簡単です!:)

于 2011-09-06T15:22:01.920 に答える