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:
codice:
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
Però credo che non sia molto corretto
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!