none
C#:別スレッドの一定周期通信 RRS feed

  • 質問

  • 以下のようなソフトを作りたいのですが、どのようにすればよいか、教えてください。

    環境:Visiual C# 2010

    メインフォームのTextBoxからAという数値を設定して、それを別スレッドに渡します。

    別スレッドからは、一定周期で、他のコンピュータへAのデータを送信し、その後、Bというデータを受信します。

    Bというデータを受信した段階で、メインフォームのlabelに書き込みます。

    教えていただきたいのは、2点です。

    上記のような場合、

    (1)別Threadの中でタイマーを駆動するのは、どうするのでしょうか?

    (2)どのように別スレッドとメインフォーム間のデータ授受をすればよいのでしょうか?

    よろしくお願いします。

    2010年9月8日 7:56

回答

すべての返信

  • (1)については、次の記事が参考になると思います。

    http://www.atmarkit.co.jp/fdotnet/dotnettips/373threadtimer/threadtimer.html

    (2)については、WinFormsなら次の記事が参考になるかと。

    http://www.atmarkit.co.jp/fdotnet/dotnettips/312ctrlinvoke/ctrlinvoke.html

    WPFの場合はこちら。

    http://pro.art55.jp/?eid=1117606

     


    なかむら(http://d.hatena.ne.jp/griefworker)
    • 回答の候補に設定 山本春海 2010年9月14日 2:17
    • 回答としてマーク 山本春海 2010年9月24日 6:23
    2010年9月8日 8:17
  • ところで、(1)は何に使うのでしょうか?

    ”別スレッド”と言われているものが通信専用であるなら、次の通信周期を待つために Thread.Sleep や AutoResetEvent など、ほかの手段も考えられたためです。
    説明されていないところで、タイマーを使わざる得ない事情があるのかもしれませんが、念のためにお聞きしています。
    # 今のままだと、タイマーでさらにスレッドが増えてわかりづらくなりそうなので。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    2010年9月8日 14:16
    モデレータ
  • こんにちは、Toparz さん。

    MSDN フォーラムのご利用ありがとうございます。フォーラム オペレーターの山本です。

    その後、いかがでしょうか。
    なかむら さんや、Azulean さんからの回答は確認いただけましたでしょうか。

    Toparz さんのその後の状況が気になるのですが、なかむら さんからの投稿が参考になる有効な情報かと思われましたので、勝手ながら回答としてマークさせていただきました。

    今後、同じ問題でこのスレッドを参照される方にも、有効な情報がわかりやすくなるかと思いますので、解決に役立った情報や、参考になった投稿には、回答としてマークすることをお願いしております。

    一旦回答としてマークさせていただきましたが、もしまだ不明な点や回答内容との行き違いなどあるようでしたら、詳細をお知らせいただいて、ご質問を続けてくださいね。

    今後とも、MSDN フォーラムをよろしくお願いいたします。それでは。
                                               
    マイクロソフト株式会社 MSDN フォーラム オペレーター 山本 春海

    2010年9月24日 6:23