C# で、シリアルデータ受信の一定時間後に何か行うために、シリアルポートとタイマを置いた。
しかし、このままシリアルポートの受信ハンドラ内からタイマの Enalbed または Start() を行ってもタイマは動かない。
受信ハンドラ内は別スレッドの扱いなのか、Invoke() を使う必要があるようだ。
具体的には下記の通り。
private void port1_DataReceived(ob..........) {
if (port1.ReadByte() == c) {
// ここでタイマにキックをかける
Invoke((MethoInvoker)delegate() { timer1.Start();});
}
}
しかし、このままシリアルポートの受信ハンドラ内からタイマの Enalbed または Start() を行ってもタイマは動かない。
受信ハンドラ内は別スレッドの扱いなのか、Invoke() を使う必要があるようだ。
具体的には下記の通り。
private void port1_DataReceived(ob..........) {
if (port1.ReadByte() == c) {
// ここでタイマにキックをかける
Invoke((MethoInvoker)delegate() { timer1.Start();});
}
}