APRESENTAR GIF ENQUANTO SHELL (ARQUIVO BAT) RODA

 Tópico anterior Próximo tópico Novo tópico

APRESENTAR GIF ENQUANTO SHELL (ARQUIVO BAT) RODA

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#484566 - 20/09/2018 15:49:21

SUDISTANO
CURITIBA
Cadast. em:Setembro/2018


No código abaixo é apresentado o GIF (que inseri via PictureBox) enquanto o BAT roda em background.

Porém tenho o problema de que sempre vai rodar o GIF apenas uma vez independente do tempo de execução do BAT. Procurei algumas soluções mas faziam que meu GIF ficasse travado até o termino de execução do BAT.

Então a lógica que busco é simples, preciso que fique na tela o GIF até que conclua a execução do BAT. Como eu posso fazer isso? Se puder responder com exemplo de código agradeço pois não tenho experiencia com VB.NET.

  Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.TransparencyKey = Color.LightBlue
        Me.BackColor = Color.LightBlue
        Timer1.Start()
        Dim ofd As New OpenFileDialog()
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        ProgressBar1.Increment(3)
        If ProgressBar1.Value = ProgressBar1.Maximum Then
            Call Shell("C:\config.bat", vbHide)
            Timer1.Stop()
            Me.Hide()
        End If
    End Sub
End Class




Resposta escolhida #484567 - 20/09/2018 15:58:52

GUIMORAES
ITAPETININGA
Cadast. em:Agosto/2009


Você pode utilizar um backgroundworker para esta finalidade.
Usar um timer é de longe a pior solução.



#484568 - 20/09/2018 16:00:25

GUIMORAES
ITAPETININGA
Cadast. em:Agosto/2009


Ah, só complementando, para usar o backgroundworker você deve fazer uso de delegates também.




#484574 - 21/09/2018 09:50:44

TUNUSAT
SAMPA
Cadast. em:Dezembro/2003


SUDISTANO,

    Acredito que você pode fazer um processamento paralelo com "Thread". Exemplos:

========================================
VB.NET -  Trabalhando com Threads

Uma aplicação pode ter mais de uma thread ao mesmo tempo ou seja podemos estar fazendo várias coisas ao mesmo tempo , quer um exemplo? O sistema operacional Windows. A barra de tarefas exibe os processos que estão sendo executados simultaneamente.

http://www.macoratti.net/vbn_thd1.htm
========================================
Trabalhando com MultiThreads no VB.NET

O termo MultiThread define a capacidade de se executar múltiplos processos ao mesmo tempo de forma independente. Ou seja você executa duas tarefas (assobiar e chupar cana) ao mesmo tempo e uma tarefa não depende da outra para ser executada.

http://www.macoratti.net/vbn_thrd.htm
========================================
Multithreading em ação com VB .NET

UMA INTRODUÇÃO SIMPLES E DIVERTIDA À CRIAÇÃO DE PROGRAMAS MULTITHREAD

https://msdn.microsoft.com/pt-br/library/cc580613.aspx?f=255&MSPPError=-2147217396
========================================
Artigo
Dicas .NET - Criando e destruindo Threads no VB.NET

https://www.devmedia.com.br/dicas-net-criando-e-destruindo-threads-no-vb-net/1874
========================================

     Mas pode fazer isso também (não é exatamente "Thread")... Exemplo:

========================================
MAQUINA DE ESTADOS VB.NET MODULE

http://www.vbmania.com.br/index.php?modulo=detalhe&id=9326
========================================
MAQUINA DE ESTADOS VB.NET CLASSE

http://www.vbmania.com.br/index.php?modulo=detalhe&id=9448
========================================

[]'s,
Tunusat.

Haja, pois, o que houver, ampliem-se obstáculos, agigantem-se problemas, intensifiquem-se lutas ou se agravem provações, trabalha sempre no bem de todos, porque, trabalhando na Seara do Bem, podes conservar a certeza de que Deus te sustentará. Emmanuel.

#484576 - 21/09/2018 10:48:04

SUDISTANO
CURITIBA
Cadast. em:Setembro/2018


Citação:
:
SUDISTANO,

    Acredito que você pode fazer um processamento paralelo com "Thread". Exemplos:

========================================
VB.NET -  Trabalhando com Threads

Uma aplicação pode ter mais de uma thread ao mesmo tempo ou seja podemos estar fazendo várias coisas ao mesmo tempo , quer um exemplo? O sistema operacional Windows. A barra de tarefas exibe os processos que estão sendo executados simultaneamente.

http://www.macoratti.net/vbn_thd1.htm
========================================
Trabalhando com MultiThreads no VB.NET

O termo MultiThread define a capacidade de se executar múltiplos processos ao mesmo tempo de forma independente. Ou seja você executa duas tarefas (assobiar e chupar cana) ao mesmo tempo e uma tarefa não depende da outra para ser executada.

http://www.macoratti.net/vbn_thrd.htm
========================================
Multithreading em ação com VB .NET

UMA INTRODUÇÃO SIMPLES E DIVERTIDA À CRIAÇÃO DE PROGRAMAS MULTITHREAD

https://msdn.microsoft.com/pt-br/library/cc580613.aspx?f=255&MSPPError=-2147217396
========================================
Artigo
Dicas .NET - Criando e destruindo Threads no VB.NET

https://www.devmedia.com.br/dicas-net-criando-e-destruindo-threads-no-vb-net/1874
========================================

     Mas pode fazer isso também (não é exatamente "Thread")... Exemplo:

========================================
MAQUINA DE ESTADOS VB.NET MODULE

http://www.vbmania.com.br/index.php?modulo=detalhe&id=9326
========================================
MAQUINA DE ESTADOS VB.NET CLASSE

http://www.vbmania.com.br/index.php?modulo=detalhe&id=9448
========================================

[]'s,
Tunusat.


Obrigado!
Fiz então com Thread, porém agora meu .BAT é executado mas meu GIF (PictureBox1) fica aberto mesmo após a execução. Como eu posso corrigir isso?

Imports System.Threading
Public Class Form1
    Private trd As Thread
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.TransparencyKey = Color.LightBlue
        Me.BackColor = Color.LightBlue
        trd = New Thread(AddressOf ThreadTask)
        trd.IsBackground = True
        trd.Start()
    End Sub
    Private Sub ThreadTask()
        Call Shell("C:\tasy.bat", vbHide)
    End Sub
End Class




#484577 - 21/09/2018 10:58:44

GUIMORAES
ITAPETININGA
Cadast. em:Agosto/2009


Citação:
  Imports System.Threading
Public Class Form1
    Private trd As Thread
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.TransparencyKey = Color.LightBlue
        Me.BackColor = Color.LightBlue
        trd = New Thread(AddressOf ThreadTask)
        trd.IsBackground = True
        trd.Start()
    End Sub
    Private Sub ThreadTask()
        Call Shell("C:\tasy.bat", vbHide)
    End Sub
End Class


Por este motivo que utilizar o backgroundworker é melhor, pois com ele você pode criar os eventos de início e fim, além de exibir o progresso.






#484578 - 21/09/2018 11:04:36

SUDISTANO
CURITIBA
Cadast. em:Setembro/2018


Citação:
:
  Imports System.Threading
Public Class Form1
    Private trd As Thread
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.TransparencyKey = Color.LightBlue
        Me.BackColor = Color.LightBlue
        trd = New Thread(AddressOf ThreadTask)
        trd.IsBackground = True
        trd.Start()
    End Sub
    Private Sub ThreadTask()
        Call Shell("C:    asy.bat", vbHide)
    End Sub
End Class

Por este motivo que utilizar o backgroundworker é melhor, pois com ele você pode criar os eventos de início e fim, além de exibir o progresso.




O problema é que não tenho experiencia com VB.NET, com os exemplos de Thread consegui fazer. Tem algum exemplo que eu consiga aproveitar para essa necessidade?



#484579 - 21/09/2018 11:09:46

GUIMORAES
ITAPETININGA
Cadast. em:Agosto/2009


Citação:
  O problema é que não tenho experiencia com VB.NET, com os exemplos de Thread consegui fazer. Tem algum exemplo que eu consiga aproveitar para essa necessidade?  


Esta é uma boa oportunidade para aprender!

http://www.macoratti.net/vbn5_ept.htm




#484580 - 21/09/2018 11:15:42

TUNUSAT
SAMPA
Cadast. em:Dezembro/2003


Última edição em 21/09/2018 11:17:29 por TUNUSAT

SUDISTANO,

   Desculpe... você tentou um ".Abort()"?

======================================
...
Destruindo uma Thread

O método Abort é chamado para destruir uma thread, ou seja, tirá-la de funcionamento permanentemente. Antes de chamar o método Abort, habilite o método IsAlive para saber se a thread ainda está em funcionamento:

If oThread1.IsAlive Then

  Thread1.Abort()

End If


https://www.devmedia.com.br/dicas-net-criando-e-destruindo-threads-no-vb-net/1874
======================================

[]'s,
Tunusat


Haja, pois, o que houver, ampliem-se obstáculos, agigantem-se problemas, intensifiquem-se lutas ou se agravem provações, trabalha sempre no bem de todos, porque, trabalhando na Seara do Bem, podes conservar a certeza de que Deus te sustentará. Emmanuel.

 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por SUDISTANO em 24/09/2018 08:14:57