Delegateについて
- 題名: Delegateについて
- 著者: HideKung
- 日時: 2009/11/09 8:57:15
- ID: 25743
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: Delegateについて
- 著者: オショウ
- 日時: 2009/11/09 9:57:34
- ID: 25744
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: Delegateについて
- 著者: HideKung
- 日時: 2009/11/09 10:38:03
- ID: 25746
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: Delegateについて
- 著者: オショウ
- 日時: 2009/11/09 12:58:34
- ID: 25747
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: Delegateについて
- 著者: オショウ
- 日時: 2009/11/09 13:00:48
- ID: 25748
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[4]: Delegateについて
- 著者: HideKung
- 日時: 2009/11/10 14:44:01
- ID: 25757
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
お世話になります。Delegateについてご教示をお願いします。
以下のようなプログラムでシリアル通信データを取り込んでいるのですが、一日に数回ほどプログラムが固まります。
そもそもDelegateのしくみが良くわかっておりませんので、原因と対策についてご教示をお願いします。
Delegate Sub AddDataDelegate(ByVal str As String)
Private Sub AddData(ByVal str As String)
Dim str1 As String : Dim sta As String()
Try
str1 = str
sta = str1.Split(","c)
If String.Compare(sta(0), "$GPGGA") = 0 Then ' 緯度、経度
xm = Double.Parse(sta(4))
ym = Double.Parse(sta(2))
xm = CInt(xm / 100 - 0.5) * 3600 + (xm - CInt(xm / 100 - 0.5) * 100) * 60
ym = CInt(ym / 100 - 0.5) * 3600 + (ym - CInt(ym / 100 - 0.5) * 100) * 60
End If
If String.Compare(sta(0), "$GPHDG") = 0 Then ' 方位
dir = Double.Parse(sta(1))
End If
If String.Compare(sta(0), "$GPDBT") = 0 Then ' 深度
dep = Double.Parse(sta(3))
End If
If String.Compare(sta(0), "$GPVTG") = 0 Then ' 対地速度(ノット)
knot = Double.Parse(sta(5))
End If
Catch ex As Exception
str = ex.Message
'SerialPort1.Close()
'SerialPort1.Open()
End Try
End Sub
Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
Dim strDataReceived As String
Dim add As New AddDataDelegate(AddressOf AddData)
Try
strDataReceived = SerialPort1.ReadLine
Catch ex As Exception
strDataReceived = ex.Message
End Try
PictureBox1.Invoke(add, strDataReceived)
End Sub