Ma scusa come fai a leggere il contenuto di un ArrayList quando ancora non è stato popolato?

codice:
 x.ThreadControl()
        For Each s As String In x.ArraySiti
            ListSiti.Items.Add(s)
        Next
Con x.ThreadControl() fai partire il Thread e subito vai a leggere il contenuto dell'ArrayList che magari o è ancora vuoto o incompleto, no?

codice:
x.ThreadControl()
'Aspetta che il Thread abbia terminato
'Poi
        For Each s As String In x.ArraySiti
            ListSiti.Items.Add(s)
        Next
Oppure segnala la fine del Thread con un evento e poi val a leggere il contenuto dell'ArrayList.