C# + VS2005 ExpressでのWindowsフォームアプリケーションの
開発に関してお聞きしたいのですが、フォーム(Form)上にテキストボックス(TextBox)
が配置されていて、あるタイミングでクラス(Woker)のメソッド(Method)を呼び出します。
この時、UIをフリーズさせないようにMethodはデリゲートとBeginInvokeを使用した
非同期呼び出しで呼び出され、処理終了後にコールバック(MethodDoneEvent)を使用してTextBoxに
取得した内容を表示します。

Methodでは「任意のWebサーバにHTTPで接続しファイルをダウンロードしてくる」
といった処理が行われているのですが、その際Methodの中で
1.通信の準備
2.Webサーバへの接続
3.ヘッダの取得
4.ファイルの取得
5.通信の後始末
と5つのステップの処理が行われています。

この時1〜5の処理の実行と結果を、逐一Form上のTextBoxに表示したいのですが
MethodDoneEventが呼ばれる時には既に5までの処理が完了しているので
リアルタイム表示にはなりません。
1〜5までの処理をリアルタイムでTextBoxに表示させたい場合、1〜5の各処理を分割し
それぞれを非同期呼び出し・コールバックからの結果取得・反映を行う必要があるのでしょうか?
それとも他に呼出元のFormに対して情報を通知する手段は存在するのでしょうか?

単純にWorkerにFormのインスタンスを保持させて、Method内で直接Form上のTextBoxを更新させれば
早いのですが.NET Frameworkの設計で「フォームメソッド以外にフォームの要素を変更させるのは好ましくない」
といった感じのことを聞いた事があるので・・・・