C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

デリゲートについて


(過去ログ 48 を表示中)

[トピック内 1 記事 (1 - 1 表示)]  << 0 >>

■26128 / inTopicNo.1)  デリゲートについて
  
□投稿者/ PROTO (10回)-(2008/10/02(Thu) 13:14:58)

分類:[VB.NET/VB2005 以降] 

VS2008 VB.NET
Windowsフォームアプリ

232Cのシリアル通信を使ったアプリを開発しています。

送受信したデータをフォームのテキストBOXに表示させたいのですが、
デリゲートを使ってテキストBOXに表示させようと思ったのですが、
送信時は問題ないのですが、
受信したときに下記のようなエラーになってしまいます。

「ウィンドウ ハンドルが作成される前、コントロールで Invoke または BeginInvoke を呼び出せません。」

このような場合どう対処すればよいでしょうか?

よろしくお願いします。

FormMain.vb
Public mCom1 As ComPort

'TextBoxに文字を追加するデリゲート
Public Delegate Sub TextWriteLineDelegate(ByVal msg As String)
Public Sub TextWriteLine(ByVal msg As String)
TextBox1.AppendText(msg & vbCrLf)
End Sub

Private Sub Button_Start_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Start.Click
Dim data() As Byte = New Byte(2) {}

data = Encoding.Default.GetBytes("TEST")
mCom1.SendData(data)

End Sub

ComPort.vb
Public Function SendData(ByVal data() As Byte) As Integer
Dim ret As Integer = 0
Dim dlg As New FormMain.TextWriteLineDelegate(AddressOf FormMain.TextWriteLine)

Try
'TextBoxに文字を追加
FormMain.Invoke(dlg, New Object() {Encoding.ASCII.GetString(data).ToString()})
'書込み
mCom.Write(data, 0, data.Length)
FormMain.Invoke(dlg, New Object() {"test"})
Catch ex1 As InvalidOperationException
'ポートが開いていない
Console.WriteLine(ex1.Message)
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
Return ret
End Function

Private Sub mCom_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles mCom.DataReceived
Dim size As Integer
Dim data As Integer
Dim dlg As New FormMain.TextWriteLineDelegate(AddressOf FormMain.TextWriteLine)

Try
size = mCom.BytesToRead()
If size <> 0 Then

While size <> 0
'バッファから受信
data = mCom.ReadByte()
'TextBoxに文字を追加
FormMain.Invoke(dlg, New Object() {data.ToString()})
End While
End If
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
End Sub
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -