Как обновить список форм из потока? Я использую это для получения записей системного журнала.
Я хотел бы обновить элемент управления listbox в моей форме из созданного мной потока.
Я использую поток для прослушивания порта 514, который является портом системного журнала.
Когда есть данные для получения потока, он выходит и возвращает данные.
Я хотел бы вызвать событие в моей основной форме, которое затем обновит список и вызовет поток для прослушивания дополнительных данных.
Я изменяю код, который только что напечатал на консоли, и теперь пытаюсь поместить его в форму.
Что я уже пробовал:
Imports System.IO Imports System.Net.Sockets Imports System.Net Imports System.Text Imports System.Net.Http Imports System.Threading Public Class Form1 Shared WithEvents mysyslog As syslog = New syslog() Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ListBox1.Items.Add("Syslog") Dim t As Thread t = New Thread(AddressOf mysyslog.Getline) t.Start() End Sub Shared Sub SyslogEvent(ByVal sdatareceived As String) Handles mysyslog.ThreadComplete Console.WriteLine(sdatareceived) 'ListBox1.Items.Add(sdatareceived) 'When I add this line I get ...cannnot refer to an instance member of a class from within a shared method or shared member initializer MsgBox("done") End Sub End Class Public Class syslog Dim ipeRemoteIpEndPoint As New IPEndPoint(IPAddress.Any, 0) Dim udpcUDPClient As New UdpClient(514) Public sDataRecieve As String Dim bBytesRecieved() As Byte Dim sFromIP As String Public Event ThreadComplete(ByVal sDataRecieve As String) Public Sub Getline() bBytesRecieved = udpcUDPClient.Receive(ipeRemoteIpEndPoint) sDataRecieve = Encoding.ASCII.GetString(bBytesRecieved) sFromIP = ipeRemoteIpEndPoint.Address.ToString RaiseEvent ThreadComplete(sFromIP & sDataRecieve) End Sub End Class