たにぐちBLOG

C#が好きでたまんない

  PASSJブログ :: ホーム :: 連絡をする :: RSS  :: ATOM :: Login
  31 投稿数 :: 0 ストーリー :: 57 コメント :: 10 トラックバック

過去の記事

カテゴリ

イメージギャラリ

.NET framework 1.1でも、別Thread(親など)で作成されたコントロールの子コントロールは作成できません。

Threadプログラミングに精通された方なら当たり前と思うかもしれませんが、最初にぶち当たった壁でした。

そして.NET framework 2.0で更なる壁が。。

別スレッドが作ったコントロールにアクセスすることもできなくなっていました。

内部変数を作り、それを介してアクセスするしかなくなりました。。。例えば、Thread関数中で生成された値をステータスバーに表示するなどもダメです。Thread中でユーザーが変更できるテキストボックスの値を取得するのは確かによくないかなぁなんて思うんですが(もしユーザーが値を変更した場合タイミングによって取得する値が変わるから)。。

とりあえず、せっせと変更作業をしています。Threadから直接コントロールにアクセスするのは良くないスタイルだったのかなぁと反省しつつ。

MessageBox.Show(this,....)のthisも、もちろんダメ。き、きびすぃー!

投稿日時 : 2004年8月16日 2:31

コメントを追加

# re: Threadのコントロールアクセスに対する制限が増えた(.NET framework 2.0) 2004/08/17 14:44 青柳 臣一
あれ?.NET Framework 1.x でも別スレッドから Windows コントロールへのアクセスはできるものもあればできないものもある、という状況でしたよ。
ちゃんと Form.Invoke or BeginInvoke を使ってスレッドをスイッチさせてやるべきだと思います。

# re: Threadのコントロールアクセスに対する制限が増えた(.NET framework 2.0) 2004/08/17 16:43 河端善博
いままで、できていたのに、今回はできなくなった ?
具体的なサンプルがあると、みなさん喜ぶかも。

できてしまっていたけど、不安定要因だったとか。
わたしの作ったマルチスレッドなプログラムも、なにげに死ぬことがあるからなぁ。。

# re: Threadのコントロールアクセスに対する制限が増えた(.NET framework 2.0) 2004/08/18 0:03 たにぐち
できてしまっていたし、特に不安定要因でもありませんでした。
1.1で直接アクセスできるコントロールはあったけれど(おそらくほとんどOKじゃないかと思います。別スレッドからの子コントロール作成はNGでしたが)、2.0では全部ダメになったということなんじゃないでしょうか。


コメント

タイトル:
名前:
Url:
コメント: