Come da titolo sto provando a usare questi oggetti a me ancora sconosciuti!
Ho letto più che potevo in giro a riguardo ma tempo di non averci capito nulla...
Per ora ho creato un piccolo progetto di prova che non fa altro che creare a runtime una serie di textbox (così da stressare il lettore di codice) e che infatti blocca l'applicazione per alcuni secondi durante la creazione.
Per testare il mio backgroundworker l'ho aggiunto alla mia form dal pannello oggetti (chiamandolo mioBGW) e ho buttato giù sto codice:
Però credo che non sia molto correttocodice:Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load mioBGW.RunWorkerAsync() End Sub Private Sub mioBGW_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles mioBGW.DoWork Try Dim y As Integer = 3 Dim max As Integer = 500 For i = 1 To max Dim mioTxt As New TextBox mioTxt.Location = New System.Drawing.Point(3, y) mioTxt.Name = "TextBox" & i mioTxt.Text = mioTxt.Name mioTxt.Size = New System.Drawing.Size(224, 20) mioTxt.TabIndex = i mioTxt.Visible = True y += 25 Panel1.Controls.Add(mioTxt) Next Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Critical, "Errore in " & ex.Source) mioBGW.CancelAsync() End Try End Sub Private Sub mioBGW_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles mioBGW.RunWorkerCompleted MsgBox("FINITO!", MsgBoxStyle.Information, "Conferma") End Sub![]()
Tant'è che mi da errore:
Operazione cross-thread non valida: è stato eseguito l'accesso al controllo 'Panel1' da un thread diverso da quello da cui è stata eseguita la creazione.
Credo di non aver capito proprio niente...non esiste una guida in italiano su questi oggetti? L'MSDN non mi è stato molto d'aiuto...oppure se qualcuno può spiegarmi un po dove sbaglio...![]()
Grazie come sempre!![]()

Rispondi quotando
