Così come hai fatto non quaglia ovviamente.
Ti consiglio di inglobare la tua Sub ovviamente modificata
codice:
Private Sub ControllaSiti()
listSiti.Items.Clear()
Dim apppath As String = My.Application.Info.DirectoryPath
Dim databasexml As New DataSet
Dim ok As String = " OK"
Dim no As String = " Bad Request!"
Dim urlSito As String = ""
databasexml.ReadXml(apppath + "\DBSiti.xml")
For Each i As DataRow In databasexml.Tables(0).Rows
Dim x As New ClassRead
urlSito = i("url_sito")
x.Url = urlSito
If x.Controllo = True Then
listSiti.Items.Add(urlSito + ok)
Else
listSiti.Items.Add(urlSito + no)
Dim err As String = x.StatoErr
Dim invio As New ClassMail
invio.MailReport(urlSito, err)
End If
Next
End Sub
nella classe ClassRead, aggiungere un evento alla classe che ti permetta di aggiungere l'elemento se soddisfa le tue condizioni.
Più o meno i n questo modo:
codice:
Imports System.Threading
Public Class ClassRead
Public Event AddItems(ByVal testo As String)
Private Sub ControllaSiti()
Dim apppath As String = My.Application.Info.DirectoryPath
Dim databasexml As New DataSet
Dim ok As String = " OK"
Dim no As String = " Bad Request!"
Dim urlSito As String = ""
databasexml.ReadXml(apppath + "\DBSiti.xml")
For Each i As DataRow In databasexml.Tables(0).Rows
Dim x As New ClassRead
urlSito = i("url_sito")
'x.Url = urlSito
If Controllo() Then
RaiseEvent AddItems("...")
Else
RaiseEvent AddItems("...")
End If
Next
End Sub
Public Sub Operazione()
Dim th As New Thread(AddressOf ControllaSiti)
th.IsBackground = True
th.Start()
End Sub
Public Function Controllo() As Boolean
Dim a As Boolean = False
Dim lungh As Integer = 0
Try
Catch ex As Exception
End Try
End Function
End Class
Chiaramente nella tua Form intercetti l'evento e aggiungi l'Item.
Ricorda che l'evento si scatena in un Thread che non è quello dove gira la tua Form.