C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: スレッドでフォームを表示


(過去ログ 49 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■26723 / inTopicNo.1)  スレッドでフォームを表示
  
□投稿者/ たける (2回)-(2008/10/19(Sun) 16:51:42)

分類:[C#] 

VS.NET 2005 C#でタスクトレイの常駐アプリを作成しています。

スレッドからフォームを表示するにはどうしたらいいのでしょうか?

// スレッド起動処理
Thread thread = new Thread;
threads = new Thread(new ThreadStart(hoge.test));
threads.Start();

// テストスレッド
public void test()
{
  while(1)
  {
    if(disp == TRUE){
      // フォーム表示
      Form2 form2 = new Form2() ;
      form2.Show() ;
    }
  }
}
※スレッド終了処理等の処理は、省いています。


イメージとしては、上記処理のような感じで、
スレッド内で、あるタイミング時に複数のフォームを表示する処理をおこないたいのです。

今、フォームを表示しようとすると、
フォームだけが表示されて、ボタン等が何も表示されず、固まった状態になってしまいます。

わかる方がいましたら、ご教授よろしくお願いします。

引用返信 編集キー/
■26724 / inTopicNo.2)  Re[1]: スレッドでフォームを表示
□投稿者/ HiJun (111回)-(2008/10/19(Sun) 16:59:09)
delegateとForm2のクラスの中で自身を起こすようにしてみては
如何でしょうか?

delegateに関しては、インターネット等で検索してみて下さい。
サンプルが沢山のっているかと思います。

引用返信 編集キー/
■26726 / inTopicNo.3)  Re[1]: スレッドでフォームを表示
□投稿者/ 渋木宏明(ひどり) (926回)-(2008/10/19(Sun) 17:46:28)
渋木宏明(ひどり) さんの Web サイト
> スレッドからフォームを表示するにはどうしたらいいのでしょうか?

別のスレッドでも書いていますが、ワーカースレッドで直接的に Form を表示するのはよくありません。
(Windows Forms 的に、明確に動作保障されていないはず)

Control.Invoke() あるいは Control.BeginInvoke() を使用して、Form の表示をプライマリスレッドに委譲するのが妥当な解決方法です。

引用返信 編集キー/
■26727 / inTopicNo.4)  Re[2]: スレッドでフォームを表示
□投稿者/ 囚人 (307回)-(2008/10/19(Sun) 21:56:40)
あんまりそんな事しないほうがいいんですけど、何でそんな事したいんでしょうか?
それ次第では別の解法が見つかるかもしれせん。


引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -