Usuário com melhor resposta
Try-Catch em uma Thread

Pergunta
-
Sempre que uso o Try Catch em uma Thread ela executa a ação do erro, mesmo estando certo.
O código abaixo, mesmo selecionado o texto na Listbox, aparece a Msgbox e para o código..
Private t1 As Thread
Sub instalar()
Dim delete As String
Try
delete = ListBox1.SelectedItems(0)
Catch
MsgBox("Perfil não selecionado", MsgBoxStyle.Exclamation)
Return
End TryNo botão uso..:
t1 = New Thread(AddressOf instalar)
t1.Start()Já tentei com backgroundWorker, mas dá na mesma.
Respostas
-
Desculpe por não dar mais informações..
É essa:
Operação entre threads inválida: controle ListBox1 acessado de uma thread que não é aquele no qual foi criado.
Como resolvo?
Ah, tá explicado..
Veja um conceito básico de Multithreading:
Todo aplicativo possui uma Thread principal, na qual são criadas as janelas e os controles destas janelas.
Os controles criados na Thread Principal não podem ser acessados de uma outra Thread, que é o que você está fazendo aí:
delete = ListBox1.SelectedItems(0)
Veja esse artigo para mais detalhes sobre como solucionar o problema:
Trabalhando com Threads em formulários Windows
Herbert Lausmann
- Marcado como Resposta Yaagoo sexta-feira, 19 de setembro de 2014 22:34
Todas as Respostas
-
-
-
-
Desculpe por não dar mais informações..
É essa:
Operação entre threads inválida: controle ListBox1 acessado de uma thread que não é aquele no qual foi criado.
Como resolvo?
- Sugerido como Resposta Herbert Lausmann sexta-feira, 19 de setembro de 2014 21:05
- Não Sugerido como Resposta Herbert Lausmann sexta-feira, 19 de setembro de 2014 21:05
-
Desculpe por não dar mais informações..
É essa:
Operação entre threads inválida: controle ListBox1 acessado de uma thread que não é aquele no qual foi criado.
Como resolvo?
Ah, tá explicado..
Veja um conceito básico de Multithreading:
Todo aplicativo possui uma Thread principal, na qual são criadas as janelas e os controles destas janelas.
Os controles criados na Thread Principal não podem ser acessados de uma outra Thread, que é o que você está fazendo aí:
delete = ListBox1.SelectedItems(0)
Veja esse artigo para mais detalhes sobre como solucionar o problema:
Trabalhando com Threads em formulários Windows
Herbert Lausmann
- Marcado como Resposta Yaagoo sexta-feira, 19 de setembro de 2014 22:34
-
Desculpe por não dar mais informações..
É essa:
Operação entre threads inválida: controle ListBox1 acessado de uma thread que não é aquele no qual foi criado.
Como resolvo?
Ah, tá explicado..
Veja um conceito básico de Multithreading:
Todo aplicativo possui uma Thread principal, na qual são criadas as janelas e os controles destas janelas.
Os controles criados na Thread Principal não podem ser acessados de uma outra Thread, que é o que você está fazendo aí:
delete = ListBox1.SelectedItems(0)
Veja esse artigo para mais detalhes sobre como solucionar o problema:
Trabalhando com Threads em formulários Windows
Herbert Lausmann
Valeu cara, mas, não consegui fazer..
Tentei assim:
Sub instalar()
If ListBox1.InvokeRequired Then
ListBox1.Invoke(instalar, porém não sei o que colocar aqui)
Else
Dim delete As String
delete = ListBox1.SelectedItems(0)
End IfEnd sub
Dá uma maãozinha :S
-
-
-
-