2012-01-19 19 views
0

アップロードの進捗状況がわかるフォームについて知らないクラスでファイルをアップロードしたい。何らかの形でそれを知らせるイベントやデリゲートの方法はありますか? 私は進捗状況を直接設定できますが、ビューの実装に依存しないようにする必要があります。 ありがとう進捗状況を他のクラスから継続的に通知する

+3

クラスは、進行状況を通知するためにフォームを購読できるイベントを公開します(進捗状況の変更 - >イベント発生)。 BackgroundWorkerは何をしているのでしょうか? – Alex

+0

[この回答](http://stackoverflow.com/questions/281408/pattern-for-progress-status-reporting)のリンクを参照してください。 –

答えて

1

間違いなく。アップロードクラスで何らかの「ProgressMade」イベントを実装する必要があります。このイベントでは、フォームが登録されます(または、コントローラのような仲介者によって購読されます)。あなたのクラスがデータが送信されたことを検出すると、 "ProgressMade"イベントを発生させる必要があります。

どのように発生するかは、クラスがアップロードを実行するために使用している方法によって異なります。 StreamWriterを使用している場合、残念ながらそれらのクラスには進行状況を監視する「反応的」イベントがありません。すべてが失われません。 ProgressMadeを起動するために使用できる「WritePerformed」を起動するために使用しているクラスから派生できるはずです。この回答を確認してください:how to increase progressbar when i write xml?。それはかなり多くの作家に適用する必要があります。 Socketのように抽象的ではないものを使用している場合は、接続にプッシュしているバイト数を十分に把握できるはずです。

+0

はい私は送信されたバイトの量を追跡することができます、私はループ内のチャンクでそれを送信します... thaksそれはかなり簡単で有望ですが、私はそれを見て:) – Zavael

関連する問題