Studio2008でのスレッドの挿入方法

このQ&Aのポイント
  • VisualC++2008を使っている初心者のためのStudio2008でのスレッドの挿入方法について解説します。
  • RS232Cの通信を含むフォームプログラムでスレッドを使用したい場合、スレッドクラスをプログラム内で作成する必要があります。
  • Studioのツールメニューからスレッドクラスを簡単に作成することはできません。しかし、基本的なスレッドの挿入方法を教えます。
回答を見る
  • ベストアンサー

Studio2008でのスレッドの挿入方法

Studio2008でのスレッドの挿入方法 VisualC++2008を使っている初心者です。 フォームプログラム上にRS232Cの通信を入れたいと考えていて、 スレッドを使ってプログラムを作ろうと考えているのですが、 スレッドクラスなどは、ボタンやテキストボックスみたいにツールから簡単に作成できるのものではないのでしょうか? (ひょっとしたら簡単に基本的なスレッドを挿入する方法があるかと思いました。) もしなければ、Studioのtoolメニューからどのように作成していくものなのでしょうか? それとも全て自分でソースにコードを挿入する必要があるのでしょうか? 基本的なことから始めますので、簡単な挿入方法があるのなら教えてください。 (サイトで見かけるスレッドのサンプルコードはなかなかイメージがわいてきません)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

BackgroundWorkerサンプルもう一本。こっちの方がワカリヤス。

参考URL:
http://cid-07c558f8e11e708f.skydrive.live.com/self.aspx/WillBeRemovedSoon/Progress.zip
horani
質問者

お礼

早速の回答ありがとうございます。 サンプルの動作内容よく分かりました。 それでもしかしたら今まで勘違いしていたのかのかも、知れないですが backgroundworkerのDoWork イベント中に SerialのReadline()を実行しているときに 他の処理は可能なのでしょうか? サンプルはsleepが実行されていますね。 単に、Sleepの代わりにReadlineを入れたら動かなくなるような気がしました。

その他の回答 (2)

回答No.3

> 単に、Sleepの代わりにReadlineを入れたら動かなくなるような気がしました。 「気がした」のならやってみてはいかがでしょうか。

horani
質問者

お礼

ありがとうございます。 RS232Cの準備ができるのに時間掛かりましたが、問題なく動きました。 MSDNのReadlineの解説に実行中は”ブロックされる”と書いてあったのですが、 このブロックという意味は他のスレッドの処理が実行されることなのですね。

回答No.1

BackgroundWorkerを検討しては?

参考URL:
http://codezine.jp/article/detail/4650

関連するQ&A

  • VBについて質問です

    VB2010でフォームデザイナーに、ツールBOXからテキストBOXとボタンを挿入します。テキストBOX内に数字を入力し、ボタンクリックで線がかけるようなプログラムを作成したいのですが、初心者で分かりません。コード等詳しく教えていただけないでしょうか。

  • スレッドがサスペンドされているか知る方法

    スレッドがサスペンドされているか知る方法 こんにちは。 Win32でプログラムしています。 スレッドを作成して、SuspendThread で停止することができますが、ResumeThreadで再開するにあたってスレッドがサスペンドされているか知る方法はあるのでしょうか? 別にフラグを用意しておきべきでしょうか?

  • Visual Studio 2010 Tabの挿入

    Visual Studio 2010でC++のプログラムを作り始めたのですが、 何かの拍子に、「Tabキーを押して任意の位置にTabコードを挿入する」ことができなくなってしまいました。 Tabキー自体が反応しないわけではなく、 ・インデントが必要な部分でTabキーを押すと行頭が揃えられる ・なにか入力済みの文字をドラッグで選択状態にしてTabキーを押すとそこにTabコードが挿入される という具合で、冒頭に書いた動作のみができなくなっているようです。 ヘルプや検索で調べてみましたが、解決方法が見つかりません。 最悪Visual Studio 2010を再インストールすれば戻るのでしょうが、 私が何か設定を変えてしまったのが原因であれば、原因を知りたいところです。 よろしければご教示いただけないでしょうか。

  • スレッドの監視方法について

    現在、pthread_createにてスレッドを生成するプログラムを作成しております。phread_createにてスレッド生成後、生成したスレッドが実行中か判断する方法はないのでしょうか? 大変申し訳ございませんが、ご教授宜しくお願い致します。

  • 画面の更新とスレッド

    ボタンを押すと、テキストボックスに10msごとに文字列を追加する関数実行するプログラムを作成したのですが、実行している間プログラムの画面の操作を受け付けなくなってしまいます。 そこで、 http://msdn.microsoft.com/ja-jp/library/ms171728(VS.80).aspx を参考にして、メインスレッド以外のスレッドからテキストボックスに書き込むようにしました。 しかし、このようにしても、 Application::DoEvents(); を、forの中で実行して強制的に画面を再描画させないと、インターフェイスへの操作を一切受け付けなくなってしまいます。 Windowsフォームの描画は、いったいどの様なタイミングで行われているのでしょうか? また、このようなインターフェイスの操作を受け付けなくなることを回避するには、 Application::DoEvents(); 以外には良い方法は無いのでしょうか?

  • ユーザーインターフェイスの一番単純なスレッドを教えてください。

     こんにちわ。 いきなりですが、VC++でユーザーインターフェイススレッドを使って、 ボタンが1つあればいいだけの別スレッドダイアログを作らなくちゃならないの です。 CWndThreadクラスを使う。。。とかCWndThreadクラスの関数を オーバーライドしなくちゃならないらしいとか、MSDNのヘルプを見てそこまでは わかったのですが、実際、何をどう作っていいのか、途方にくれています。 サンプルを入手して、ソースを追っかけてみているのですが、MSDNのサンプルは 余計な機能とかがいっぱい入っていて、「本当に必要なコードはこれ!!」 というのがよくわかりません。 どなたか、すっごーく単純なスレッド作成、スレッド側の最低限コーディング を教えてください!!というか、助けてください!!!!

  • visual studio間変換について

    visual studio2010にて作成したデータ(VBにてお絵かきツール作成)を、.vb(VBファイル形式)をフォームデータなどと一緒に、保存しましたが、2008では、開くことができません。 2008にて開けるようにする方法を教えてください。 できれば、2008形式で保存するやり方が一番うれしいです。

  • VisualC++でRS232C経由のデータの送受信方法

    仕事でVisualC++でプログラムを作っているのですが、VC++は初心者なので解からない事がいっぱいです。 今作っているプログラムは、VisualC++でRS232Cを使って送られてくるデータをダイアログのエディットボックスに表示するというプログラムなんですけど、どうやってデータを受取るのかまたそのデータをどうやって表示するのかがまったく解からない状態です。 解かる方は教えて下さい。 よろしくお願いします。

  • VisualBasic6.0からVisualC++で作成したDLLを呼

    VisualBasic6.0からVisualC++で作成したDLLを呼び出す、簡単なプログラムの仕方を教えてください。 初心者ですが、VisualBasic6.0からVisualC++で作成したDLLを呼び出す簡単なプログラムの仕方、または、サンプル等がありましたらどうぞ宜しくお願いいたします。初心者なので、可能な限り、簡単なプログラムのサンプルがあったら嬉しいです。

  • vbaで、フォームコントロールを挿入する方法

    vbaで、フォームコントロールを挿入する方法 エクセル2007を使っています。 最近、vbaを始めたのですがわからない事があります。 開発→挿入→挿入→フォームコントロールで、 オプションボタンやチェックボックスを、 vbaで挿入したいのですが可能でしょうか? 例えば、フォームコントロールのボタンを押しただけで オプションボタンを6つ挿入するなどです。 ActiveXコントロールでは、可能とどこかのサイトで見たのですが、 どうしてもフォームコントロールの方を使いたいの…。 よろしくお願いします。

専門家に質問してみよう