Oppure

Loading
16/11/10 11:29
foralobo
Postato originariamente da Il Totem:

Togli l'if.


ebbene si...nella disperazione avevo provato anche questo...ma logicamente cosi invoke innesca una sorta di ricorsione infinita
Ultima modifica effettuata da foralobo 16/11/10 12:21
aaa
17/11/10 18:22
Il Totem
Ti ho detto di togliere l'if supponendo che non lasciassi lì dentro la chiamata RICORSIVA.
    Delegate Sub MainCaller()
 
    Private Sub InvokePopulateList()
        Me.Invoke(New MainCaller(AddressOf PopulateList))
    End Sub

    Private Sub PopulateList()
        For i = 0 To 100000
            ListBox1.Items.Add(i)
        Next
    End Sub
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim t As New Threading.Thread(AddressOf InvokePopulateList)
        t.Start()
    End Sub
aaa
18/11/10 10:32
foralobo
Postato originariamente da Il Totem:

Ti ho detto di togliere l'if supponendo che non lasciassi lì dentro la chiamata RICORSIVA.
    Delegate Sub MainCaller()
 
    Private Sub InvokePopulateList()
        Me.Invoke(New MainCaller(AddressOf PopulateList))
    End Sub

    Private Sub PopulateList()
        For i = 0 To 100000
            ListBox1.Items.Add(i)
        Next
    End Sub
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim t As New Threading.Thread(AddressOf InvokePopulateList)
        t.Start()
    End Sub



grazie totem....ma questo codice non va bene...
è sempre il principale che popola la lista e mi si blocca
aaa
18/11/10 10:38
Il Totem
Allora non ci capiamo. Se vuoi evitare l'errore, l'unico modo è accedere alla lista dal thread che l'ha creata e questo è SEMPRE il thread principale, quindi non puoi che fare in questo modo.
Non puoi aggiungere la lista da un thread separato perché dovresti accedere alla proprietà Controls del thread principale.

Nulla ti vieta di pensare ad una soluzione più elegante di questa. Ad esempio: è veramente necessario caricare 100'000 elementi tutti insieme? Perché non solo i primi 100 e gli altri su richiesta?
aaa
18/11/10 12:31
foralobo
Postato originariamente da Il Totem:

Allora non ci capiamo. Se vuoi evitare l'errore, l'unico modo è accedere alla lista dal thread che l'ha creata e questo è SEMPRE il thread principale, quindi non puoi che fare in questo modo.
Non puoi aggiungere la lista da un thread separato perché dovresti accedere alla proprietà Controls del thread principale.

Nulla ti vieta di pensare ad una soluzione più elegante di questa. Ad esempio: è veramente necessario caricare 100'000 elementi tutti insieme? Perché non solo i primi 100 e gli altri su richiesta?



si non ci siamo capiti...il mio intento era quello di lavorare da thread secondario... in ogni caso saltando l'errore si puo fare lo stesso... certo la gestione è un po complessa ma pazienza...grazie di tutto
aaa