THREAD UTILIZAR OBJETOS DO FORMULARIO
Pessoal é o seguinte estou começando a utilizar threads e estou com uma dúvida.
quero acessar os objetos do formulário como combobox, barra de status, mais quando utilizo esses objetos acontece o seguinte erro:
[Ô]Operação entre threads inválida: controle [ô]stsNFe[ô] acessado de um thread que não é aquele no qual foi criado.[Ô]
alguém poderia me ajudar?
quero acessar os objetos do formulário como combobox, barra de status, mais quando utilizo esses objetos acontece o seguinte erro:
[Ô]Operação entre threads inválida: controle [ô]stsNFe[ô] acessado de um thread que não é aquele no qual foi criado.[Ô]
alguém poderia me ajudar?
O form em si é uma thread. Se vc tentar acessar qualquer coisa da thread que vc criou no seu form, vai dar essa mensagem. Vc tem que usar um delegate nesse caso...
eu tentei fazer esse delegate mais não consegui entender direito como funciona, poderia me explicar.
obrigado.
obrigado.
é uma das coisas mais xaropes que tem pra fazer....
Tem um artigo muito bom aqui
Tem um artigo muito bom aqui
olha estou fazendo assim:
Private Delegate Sub StatusBar(ByVal Tool As System.Windows.Forms.ToolStripStatusLabel, ByVal CorStatus As System.Drawing.Color, ByVal TextoStatus As String)
Private Sub StatusWS()
Dim Dele As StatusBar
Dele = New StatusBar(AddressOf Status)
Dele.Invoke(toolWS, Color.Black, [Ô]Buscando Status ...[Ô])
End Sub
Private Sub Status(ByVal Tool As System.Windows.Forms.ToolStripStatusLabel, ByVal CorStatus As System.Drawing.Color, ByVal TextoStatus As String)
Tool.ForeColor = CorStatus
Tool.Text = TextoStatus
NFEletronica.stsNFe.Refresh()
End Sub
mais continua dando o mesmo erro
Private Delegate Sub StatusBar(ByVal Tool As System.Windows.Forms.ToolStripStatusLabel, ByVal CorStatus As System.Drawing.Color, ByVal TextoStatus As String)
Private Sub StatusWS()
Dim Dele As StatusBar
Dele = New StatusBar(AddressOf Status)
Dele.Invoke(toolWS, Color.Black, [Ô]Buscando Status ...[Ô])
End Sub
Private Sub Status(ByVal Tool As System.Windows.Forms.ToolStripStatusLabel, ByVal CorStatus As System.Drawing.Color, ByVal TextoStatus As String)
Tool.ForeColor = CorStatus
Tool.Text = TextoStatus
NFEletronica.stsNFe.Refresh()
End Sub
mais continua dando o mesmo erro
Obrigado mais consegui fazer de outra maneira:
Control.CheckForIllegalCrossThreadCalls = False
trdLoad = New Thread(AddressOf ThreadLoad)
trdLoad.Start()
Control.CheckForIllegalCrossThreadCalls = False
trdLoad = New Thread(AddressOf ThreadLoad)
trdLoad.Start()
Tópico encerrado , respostas não são mais permitidas