DOBON.NET DOBON.NETプログラミング掲示板過去ログ

シリアル通信で別Formで常にデータ受信する方法について

環境/言語:[VisualStdio2005ProfessionalEdition、C#、Framework2.0]
分類:[.NET]

お世話になっております。

シリアル通信からくるデータを常に受信できるようにしたいと思っています。
そこで、下記のような感じで記述したのですが、起動中にデータを受信しなが
ら、Form1の操作をしていると
"スレッド '<名前がありません>' (0x8a8) はコード 0 (0x0) で終了しました。"
と出力ウィンドウにでてシリアル通信での受信がで出来なくなってしまいます。

どのようにすればシリアル通信を受信しながら、Form1で操作できるのでしょうか?

アドバイス等よろしくお願いします。

------------------------------------

【Form1】
namespace Sample_SerialThread
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Serial serial = new Serial();
            serial.Activate();
            
            /*--------------------------------------------------------
             * 下記のように別スレッドで起動させようともしたのですが、
             * " ??? "の箇所でどのメソッドを呼べばコンパイルがとおる
             * のかが分かりませんでした。。。
             *--------------------------------------------------------*/
            //serial_thread = new Thread(new Thread(/*???*/));
            //serial_thread.IsBackground = true;
            //serial_thread.Start();            
        }

        private void button1_Click(object sender, EventArgs e)
        {
            richTextBox1.AppendText("TEST\r\n");
        }
    }
}

【Serial】
namespace Sample_SerialThread
{
    public partial class Serial : Form
    {
        public Serial()
        {
            InitializeComponent();
            serialPort1.Open();
        }

        private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            string data = serialPort1.ReadExisting();
            Console.WriteLine(data);
        }
    }
}
お世話になっております。

自己解決しました。

【Serial】でserialPort1_DataReceivedを使用せずに【Form1】でスレッドを作って
【Serial】内でループするようにしました。

お騒がしました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板