[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 07/09 19:51 / Filesize : 230 KB / Number-of Response : 995
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

ふらっとC#,C♯,C#(初心者用) Part23



30 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 16:36:16 ]
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の設計で「フォームメソッド以外にフォームの要素を変更させるのは好ましくない」
といった感じのことを聞いた事があるので・・・・







[ 続きを読む ] / [ 携帯版 ]

全部読む 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<230KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef