2011-08-12 72 views
5

如何在單個UI中顯示多個順序作業?排隊順序UI作業並在UI中顯示它們

我的使用情況是以下各項之一:

  1. 用戶操作
  2. 開始第一工作(未知長度)
  3. 等待第一作業完成,並開始第二工作(已知長度)
  4. 等待第二個任務完成並開始第三個任務(已知長度)

我想以下列方式向用戶顯示此內容:

  1. 有一個主要的「用戶操作」對話框中沒有全局進度條(因爲第一份工作的未知的,在執行長確實可變我不能得到準確的總長度)
  2. 在這個對話框中有3子第一部分每個作業都有一個進度條,每個作業都有IProgressMonitor.UNKNOWN風格。
  3. 在此對話框中,進度條將作爲底層作業按順序更新。

這將允許最終用戶立即看到它的動作分解爲3個子任務(子任務對最終用戶有意義),並且每次啓動一個新的子任務時,他都可以看到這個子任務的長度(當然不知道第一個)。

經過多次搜索後,我無法執行該操作,今天我將這3個子任務報告爲3個單獨的連續對話框,缺點是最終用戶最初可能認爲他的操作將在第一個未知的子任務。

回答

2

難道你不能實現自己的調度規則來控制你的工作的執行順序,並有效地阻止第二個工作,而第一個正在執行,第三個而第二個正在運行?

查看http://www.eclipse.org/articles/Article-Concurrency/jobs-api.html瞭解詳情和代碼片段。

從上面的文章:

調度規則獲取的任何時間,該線程的執行可能被阻塞,直到可以得到規則。在這樣的情況下,用戶將看到顯示正在運行的任務進度的對話框,並在任務被其他任務阻止時提供反饋,從中受益。

雖然我自己沒有實現這個,但我在Eclipse中看到了這個。例如,當工作臺保存其狀態時,例如,在項目仍在構建時,Eclipse將報告構建過程的進度,同時阻止狀態持久性作業,直到構建完成。它將作業顯示爲同一個對話框中的單獨條目,並明確指出第二個作業被第一個作業阻擋。

+0

感謝您的回答。我只是試圖在nmy作業之間添加調度規則,但不幸的是它不會顯示在同一個對話框中。如果在所有作業上調用setuser(true),我有幾個對話框,並且如果僅在第一個作業上調用,則我有一個對話框,其中包含所有作業,但第一個作業完成後即會關閉 –

+0

不能使用作業視圖而不是單獨的進度對話框?如有必要,您甚至可以實現自己的對話框來託管該視圖。看看這個 - http://www.richclient2.de/2006_09_28/using-the-eclipse-jobs-api/用於安排工作,而這 - http://wiki.eclipse.org/FAQ_How_do_I_prevent_two_jobs_from_running_at_the_same_time%3F for調度規則。 –

+0

這可能也有幫助 - http://wiki.eclipse.org/FAQ_How_do_I_switch_from_using_a_Progress_dialog_to_the_Progress_view%3F對不起,忘了將它添加到我上面的評論。 –

0

爲什麼不把一個進程欄分成三部分。第一份工作的前三分之一,然後是第二份和第三份。

無論如何這很簡單! :)