以下のサンプルコードは、ワーカースレッドでReadをループ処理してデータをUIにマーシャリングする方法を示します。
private void button1_Click(object sender, EventArgs e)
{
// 別のスレッドでデータを受信します。
myComponent.Start(readLoopWorker, null);
}
private void readLoopWorker(object state)
{
// リモートホストから送信されたときにデータを受信します。
byte[] buffer = new byte[1024];
Data data = myComponent.Read(buffer);
while (data != null)
{
myComponent.Marshal(data, "", null);
data = myComponent.Read(buffer);
}
myComponent.Close();
}
private void myComponent_Data(object sender, Dart.Sockets.DataEventArgs e)
{
// データが受信されるたびに、そのデータを表示します。
textDisplay.AppendText(e.Data.ToString());
}
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' 別のスレッドでデータを受信します。
myComponent.Start(AddressOf readLoopWorker, Nothing)
End Sub
Private Sub readLoopWorker(ByVal state As Object)
' リモートホストから送信されたときにデータを受信します。
Dim buffer(1023) As Byte
Dim data As Data = myComponent.Read(buffer)
Do While data IsNot Nothing
myComponent.Marshal(data, "", Nothing)
data = myComponent.Read(buffer)
Loop
myComponent.Close()
End Sub
Private Sub myComponent_Data(ByVal sender As Object, ByVal e As Dart.Sockets.DataEventArgs) Handles myComponent.Data
' データが受信されるたびに、そのデータを表示します。
textDisplay.AppendText(e.Data.ToString())
End Sub