none
visible não funciona corretamente RRS feed

  • Discussão Geral

  • Olá

    Gente estou executando uma função para backup de um banco de dados mas estou com dois problemas.

    1. O primeiro é que as vezes o form trava, mesmo usando o async, não sei oque pode estar faltando/errado;

    2. O segundo é que  "LABEL1.visible = true" não funciona, ou seja, mesmo executando ".visible = true" por primeiro e demorando o backup o LABEL1 não é exibido antes do processo.

    Segue meu código:

    Public Sub FazerBackup() LABEL1.Visible = True Try Using source As New SQLiteConnection(BancoDados_DataSource), destination As New SQLiteConnection("Data Source=" & sd.FileName & ";Version=3;New=True;Compress=True;Password=" & My.Resources.p & ";") source.OpenAsync() destination.OpenAsync() source.BackupDatabase(destination, "main", "main", -1, Nothing, 0) End Using Catch ex As Exception

      MsgBox(ex.Message) End Try LABEL1.Visible = False End Sub


    Quem puder me ajudar agradeço.

    sexta-feira, 23 de março de 2018 19:51

Todas as Respostas

  • Eliseu5,

       Não sei é uma boa, mas você pode fazer um "Sleep".
       Depois do "LABEL1.Visible = True".

    ================================

    VB .NET - 'Dando um tempo' no seu programa
    http://www.macoratti.net/11/01/vbn_sleep.htm

    ================================

       Ou então fazer um "Refresh"... esse seria em cima do form.

    ================================

    Método Control.Refresh ()
    https://msdn.microsoft.com/pt-br/library/system.windows.forms.control.refresh(v=vs.110).aspx

    ================================

       Pode ser que ajude...

    []'s,
    Fabio I.
    • Editado Fabio I sexta-feira, 23 de março de 2018 20:11
    sexta-feira, 23 de março de 2018 20:02
  • Olá Fabio

    Obrigado pelo interesse em me ajudar.

    Eu já tentei sleep e não fez diferença.

    Quanto ao refresh, coloquei depois do LABEL1.visible = true e funcionou perfeitamente.

    Ficando assim:

    Public Sub FazerBackup() LABEL1.Visible = True

      me.Refresh()

    Try Using source As New SQLiteConnection(BancoDados_DataSource), destination As New SQLiteConnection("Data Source=" & sd.FileName & ";Version=3;New=True;Compress=True;Password=" & My.Resources.p & ";") source.OpenAsync() destination.OpenAsync() source.BackupDatabase(destination, "main", "main", -1, Nothing, 0) End Using Catch ex As Exception MsgBox(ex.Message) End Try LABEL1.Visible = False End Sub


    Muito obrigado!

    sexta-feira, 23 de março de 2018 20:36
  • Segue sugestão para teste.

    Public Sub FazerBackup()
               LABEL1.Visible = True
    		 Application.DoEvents()
                Try
                    Using source As New SQLiteConnection(BancoDados_DataSource),
                        destination As New SQLiteConnection("Data Source=" & sd.FileName & ";Version=3;New=True;Compress=True;Password=" & My.Resources.p & ";")
                        source.OpenAsync()
                        destination.OpenAsync()
                        source.BackupDatabase(destination, "main", "main", -1, Nothing, 0)
                    End Using
                Catch ex As Exception
               MsgBox(ex.Message)
                End Try
    
               LABEL1.Visible = False
        End Sub


    MARIANO1776

    sexta-feira, 23 de março de 2018 22:47
  • Utilize  Application.DoEvents() e thereads
    sábado, 24 de março de 2018 00:20
  • Gente, já resolvi usando me.Refresh() depois do visible, segundo sugestão do Fabio, mas vou tentar também as outras opções. Obrigado a todos.
    quinta-feira, 21 de junho de 2018 19:13