URGENTE!!!NON MI FUNZIONA UN THREAD IMPORTANTE-CORREZIONE-

giovedì 19 febbraio 2004 - 17.09

trinity Profilo | Guru

ragazzi mi serve assolutamente che questo thread mi funzioni, mi posto il mio codice e vi indico dove avviene l'errore, potete darmi un consiglio?

Ciò che viene scritto quando avviene l'errore è: I controlli creati su un thread non possono aveve come elemento padre un controllo su un thread diverso.

PARTE 1********
Private Sub Frm_planning_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim avvio As New System.Threading.Thread(AddressOf caricaplanning)
avvio.Start()
End Sub
***************

PARTE 2********
Private Sub caricaplanning()
SyncLock (Me.Panel2)
'*****caricamento impostazioni dettagli planning*****
Me.Text = "Planning del: " & Format(Now)
'----------------------------------------------------
'*******caricamento del numero di record della tabella camere********
camere.Open("SELECT * FROM camere", db, ADODB.CursorTypeEnum.adOpenForwardOnly, ADODB.LockTypeEnum.adLockOptimistic)
contatore = 0
While camere.EOF = False
pulsante = New Button()
Me.Panel2.Controls.Add(pulsante) ------> L'ERRORE AVVIENE
pulsante.Cursor = Cursors.Hand
pulsante.TextAlign = ContentAlignment.BottomLeft
pulsante.Font = New Font("Microsoft Sans Serif", 7)
pulsante.Height = "60" : pulsante.Width = "135"
'*****determinazione del top position dei pulsanti*****
contatore = contatore + 1
If contatore <= 10 Then
pulsante.Top = 0
If contatore = 1 Then
pulsante.Left = 0
Else
Dim n_left As Integer
n_left = n_left + 136
pulsante.Left = n_left
End If
End If
'------------------------------------------------------
pulsante.ImageAlign = ContentAlignment.TopRight
pulsante.FlatStyle = FlatStyle.Flat
'*****determinazione dello stato della camera*****
Try
Dim sql As String
gestcliente.Open("SELECT * FROM gestcliente WHERE n_camera='" & camere("cod_camera").Value & "'", db, ADODB.CursorTypeEnum.adOpenForwardOnly, ADODB.LockTypeEnum.adLockOptimistic)
If gestcliente.EOF = False Then
pulsante.Text = camere("cod_camera").Value & Chr(10) & Chr(10) & gestcliente("cognome").Value & " " & gestcliente("nome").Value
pulsante.Image = Image.FromFile("C:\programmi\hmanager\hotel manager\image\prenotata.png")
pulsante.BackColor = Color.WhiteSmoke
Else
pulsante.Text = camere("cod_camera").Value & Chr(10) & Chr(10) & "ROSSI MARIO"
pulsante.BackColor = Color.WhiteSmoke
pulsante.Image = Image.FromFile("C:\programmi\hmanager\hotel manager\image\libera.png")
pulsante.BackColor = Color.WhiteSmoke
End If
Catch
MsgBox(Err.Description)
Finally
gestcliente.Close()
End Try
AddHandler pulsante.Click, AddressOf clicksubottone
camere.MoveNext()
End While
camere.Close()
End SyncLock
***************

Brainkiller Profilo | Guru

Semplice, che io sappia non è possibile creare oggetti in un thread secondario ma devono essere creati nel main thread per questo ti dà l'errore. Ci sono dei limiti fisici del sistema, ci dovrebbe essere anceh documentazione a riguardo ma ora non ce l'ho sottomano. Crea quindi tutti i controlli della GUI nel main thread a design o a runtime e poi nei thread secondari esegui le elaborazioni.
ciao

david
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5