2011-06-29 25 views
0

私はC#ウィンドウフォーム(fw4.0)でアプリケーションを持っています.Json文字列を作成し、Webページのアクションメソッドにポスト経由で送信するメソッドがあります。どれくらいか分かりませんが、メソッドが実行されている間にプログレスバーを表示したいと思います。どうすればいいですか? 私が持っている1つのアイデアは、メソッドが実行されている間にカウンタを実行してユーザーに表示することですが、別のスレッドにある必要があります。どうやって?メソッドがWindowsアプリケーションで実行中に進行状況を表示

私は提供するために、より有益な情報を持っていません..私はあなたが私を助けることを願っています! ありがとう!

答えて

1

Use the background worker UIをブロックしたり進捗状況を報告しないようにします。

+0

私はそれについて知っていますが、私はポストを送信し、答えを取得する方法の進捗状況を表示することはできません..メソッドがforeach、whileまたはforループの間にある場合は、しかし、このメソッドは実行中に何らかの形の "count"を持っていません。 –

+0

期間がわからない場合は、進行状況バーを[不確定]に設定します。http://stackoverflow.com/questions/2844833/how-do-you-show-progress-when-indeterminate-true-in-a-wpf-プログレスバーあなたはコールがどれくらい時間がかかりますかわからないでしょう... –

+0

私はそれが好きですが、ProgressBarオブジェクト(net4.0 c#)で中級を見つけることはできません。あなたが私に与える例はwpfです。私はWindowsフォームでは、ProgressBarに中級のものはないと思います:S メソッドの実行中に現在の時刻を表示し、メソッドが終了すると停止するタイマーがあります。 ..しかし、私は私が持っていないスレッドの知識が必要だと思う:Dは良いアイデアですか? –

0

次の2つの値に基づいて進捗状況を報告することができます

  • prob_time - アクションが完了するまでにかかる時間の最も可能性の量。

  • max_time - アクションが失敗したとみなす前に待つことができる最大時間。

その後、(MAX_TIME-prob_time)で100%に、プログレスバーがprob_timeに特定のポイント(例えば80%)を取得することができます。

アクションが速いことMAX_TIMEを完了した場合、あなたは100%に進捗状況をジャンプさせると、「成功」を報告し、そうでない場合は報告し「失敗」

0

最後に私がやりました! 私は2人のバックグラウンドワーカーを使用しなければなりません。これは私がやったことです.. backgroundWorker1:postメソッドを実行します。 backgroundWorker2:TimeSpanカウンタを実行します。 backgroundWorker2が起動するときにTimeSpanを0に設定し、DoWorkでbackgroundWorker1 CancellationPendingがfalseの場合、backgroundWorker2で進行状況を報告します。 postメソッドが終了したら、backgroundWorker1をCancelAsyncに設定して、backgroundWorker2を終了します。 私はそれが私の最善の解決策だと思います。

関連する問題