すがブロ

sugamasaoのhatenablogだよ

FTPクライアントを作ってみよう(5)

スレッドでのエラーは調べてみたら参考にしている本の公式サイトのQ&Aに載っていた。
http://www.cutt.co.jp/book/4-87783-105-3.html

質問:
P85 のサーバーアプリケーションを作成したのですが、「有効ではないスレッド間の操作: コントロールが作成されたスレッド以外のスレッドからコントロール 'rtbox_show' がアクセスされました。」というエラーが出て、正常に動作しません。この場合、プログラムをどのように変更すればいいでしょうか。
回答:
.Net frameworkのバージョンは1.1から2.0にアップして、仕様が変わるところが多いです。今回の例で言えば、他のスレッドから UI スレッドに対する操作のチェックは曖昧でしたが、2.0になって、このチェックは厳しくなってきて、完全にできなくなりました。
そこで、違うスレッドから、UI を更新するには、delegate を使う方法があります。

というわけで、delegateを使って書き込みメソッドを経由してアクセスすれば良いらしい。
で、サンプルと以下の@ITの記事を見つつ書いてみる。
@IT:連載 One Point .NET -- デリゲート再入門
http://www.atmarkit.co.jp/fdotnet/onepoint/onepoint03/onepoint03_01.html
で、晴れてスレッドを使いながらテキストデータを表示できるようになったんだけど、どうもデータがすべて表示されない。スレッドでまわしているはずなのに一回分のデータしかとれていないっぽいのでそこらへんをもうちょっと調査する必要があるようだ。
まだまだ、よくわかってねーな。おれ。