- Код: Выделить всё
AddHandler m_PacketMonitors(0).NewPacket, AddressOf Me.OnNewPacket
Есть обработчик вычисляюшии размер и прочие данные
- Код: Выделить всё
Private Sub OnNewPacket(ByVal m As Monitor, ByVal p As Packet)
Dim lstItem As ListViewItem = New ListViewItem
Dim _AddPacket As AddPacket
m_Packets.Add(p)
m_PacketsSize += p.TotalLength
Try
With lstItem
.Text = p.Time.ToString
.SubItems.Add(p.Protocol.ToString)
.SubItems.Add(p.Source.ToString)
.SubItems.Add(p.Destination.ToString)
.SubItems.Add(p.TotalLength.ToString)
End With
_AddPacket = New AddPacket(AddressOf AddMyPacket)
Dim r As IAsyncResult = BeginInvoke(_AddPacket, New Object() {lstItem, m_Packets.Count, m_PacketsSize})
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
Похоже Каждыи раз при обработке события создается отдельныи поток.
Далее обеспечивается доступ к елементу управления Лист вью
из разных потоков.
- Код: Выделить всё
Private Sub AddMyPacket(ByVal lstItem As ListViewItem, ByVal PacketCount As Long, ByVal PacketSize As Double)
PacketList.Items.Add(lstItem)
'StatusBar.Text = String.Format("Intercepted {0} packet(s) [{1} bytes]", PacketCount, PacketSize)
End Sub
А как обеспечить доступ к переменнои
если я хочу просуммировать данные p.TotalLength из етих потоков ?
Спасибо