none
"Destravar" Form ao processar comando RRS feed

  • Pergunta

  • Eu fiz um programa que descompacta, move um arquivo e compacta novamente, porém enquanto isso está processando a form trava.

    Como "destravo" a form quando ela está processando um comando?

    terça-feira, 16 de setembro de 2014 23:05

Todas as Respostas

  • Você terá que iniciar uma nova Thread para executar os comandos, deixando o Form na Thread principal.
    quarta-feira, 17 de setembro de 2014 12:14
  • Você deve usar o componente backgroundWorker que tem três metodos: 

    O primeiro é o que acontece quando o worker é chamado e o ultimo é o que acontece quando o worker termina...

    isso acontece em outra thread e o form não fica travado!

    abraço!

    quarta-feira, 17 de setembro de 2014 14:45
  • Como faço isso em código?
    quarta-feira, 17 de setembro de 2014 19:00
  • Olá,

    Seguindo a linha de pensamento do Daniel, segue um artigo exemplificando como usar o componente Background Worker:

    Executando procedures em Threads


    Herbert Lausmann

    quarta-feira, 17 de setembro de 2014 19:02
  • Bom coloquei o código que tava no botão na sub do BackgroundWorker, e chamei pelo:

     BackgroundWorker1.RunWorkerAsync()

    Mas, quando eu uso o método Try-Catch ele executa ação do erro, mesmo estando tudo certo. 

    quarta-feira, 17 de setembro de 2014 19:45
  • Poste mais informações sobre o erro e se possivel o codigo... ai fica mais facil.. abraço... 
    quarta-feira, 17 de setembro de 2014 19:48
  • Dim delete As String
            Try
                delete = ListBox1.SelectedItems(0)
            Catch
                MsgBox("Não selecionado", MsgBoxStyle.Exclamation)
                Return
            End Try

    Caso o texto na ListBox não esteja selecionado, irá mostrar a MsgBox e irá "parar" o código.

    Caso esteja selecionado, é para o código prosseguir normal (por um botão o código vai normalmente)

    quarta-feira, 17 de setembro de 2014 19:54
  • Resolvi essa parte..

    Mas, ainda continua "travada" mesmo em outra Thread. Tentei pelo BackgroundWorker e com System.Threading mesmo assim a Form e a ProgressBar fica travada. Será que é o código (o código é da DLL componente)


    sábado, 20 de setembro de 2014 00:02