2011-06-29 33 views
0

我在c#窗體窗體(fw4.0)中有一個應用程序,我有一個方法創建一個json字符串並通過後發送到網頁中的操作方法。我不知道需要多少,但我想在執行方法時顯示進度條。我該怎麼做? 我的一個想法是在方法運行時執行計數器並將其顯示給用戶,但我不知道如何......它必須位於另一個線程中?怎麼樣?在Windows應用程序中運行方法時顯示進度

我沒有任何更有用的信息提供..我希望你能幫助我! 謝謝!

回答

1

Use the background worker防止阻止UI並報告進度。

+0

我知道這一點,但我不知道如何顯示發送帖子和檢索答案的一種方法的進展..如果該方法是在foreach之間,爲或while循環我會知道它如何。但是這種方法在執行時沒有任何形式的「計數」。 –

+0

如果你不知道持續時間將進度條設置爲Indeterminate:http://stackoverflow.com/questions/2844833/how-do-you-show-progress-when-indeterminate-true-in-a-wpf-進度條你永遠不會知道電話會花多長時間... –

+0

我喜歡這一點,但我無法找到ProgressBar對象中的任何Intermediate(net4.0 c#)。你給我的例子是wpf ..我認爲在windows窗體中,ProgressBar中沒有中間事物:S 有一件事可以起作用,它是一個定時器,它顯示方法運行時的當前時間,當方法結束時停止..但我想我需要一些線程的知識,我沒有:D是一個好主意嗎? –

0

您可以根據兩個值報告進展情況:

  • prob_time - 的時間最有可能的量的行動將才能完成;

  • max_time - 在考慮操作失敗之前,您願意等待的最長時間;

您可以使進度條在prob_time中達到某個點(例如80%),然後在(max_time-prob_time)中達到100%。

如果動作完成速度越快MAX_TIME,你取得的進步跳轉到100%,並報告「成功」,否則報告「失敗」

0

最後我做到了! 我必須使用2個後臺工作者..這就是我所做的... backgroundWorker1:執行post方法。 backgroundWorker2:執行TimeSpan計數器。 當backgroundWorker2啓動時,將TimeSpan設置爲0,並且在DoWork中,如果backgroundWorker1 CancellationPending爲false,那麼我會在backgroundWorker2中報告進度。 當post方法完成後,我將backgroundWorker1設置爲CancelAsync,因此backgroundWorker2將終止到。 我認爲這是我最好的解決方案。

相關問題