Visual Visual Studio を使って、開発する場合のテクニックなど
イベントは、別スレッドで実行されることに注意
受信イベントなどのイベントは、メインとは別のスレッドで実行されます。マルチスレッドによるプログラムテクニックが必要になりますので、この点に注意してください。
例えば、次の項目のように、ラベルに受信データを表示するにも、手続きが必要になります。
イベント内で、Windowsのコントロールを使う
シンプル通信シリーズのイベント内で、Windowsのコントロールを使うには、手続きが必要です。これは、Windowsのコントロールを操作できるのは、メインのスレッドからしかできない制限があるためです。 詳しくは、こちらの記事があります。
@ITの記事・・・Windowsフォームで別スレッドからコントロールを操作するには?
具体的なプログラムは、以下のようになります。
ラベルやテキスト、タイマーといったコントロールを操作する場合、デリゲートを使い、イベント発生のスレッドとは異なるスレッドで実行する必要があります。
private void Rs_Com(object sender, Aoyama.Rs232.RecEventArgs e)
{
AddMessage add = new AddMessage(ShowMessage);
string s = e.RecValue;
label1.Invoke(add, s);
}
public delegate void AddMessage(string message);
private void ShowMessage(string message)
{
label1.Text = message;
}