Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [VB.NET] Finestra di stato operazione

    Hola!

    un problemone, ho la necessità, nella mia applicazione, di costruire una form contenente una ProgressBar.

    Quando questa form viene visualizzata la ProgressBar deve scorrere, in modo da indicare che si sta svolgendo una operazione (query su database, ciclo, macinando il caffe o altro).

    Cosa importante, questa form deve essere sempre visualizzata,non deve avere problemi di refresh quindi anche se il resto dell'applicativo è bloccato per l'esecuzione in corso questa deve sempre girare e, ovviamente, non deve bloccare l'esecuzione dell'elaborazione in corso.

    Sicuramente si risolve con i thread ma fino ad adesso non sono riuscito a trovare niente, avete qualche spunto/esempio?

    grazie
    ...e quando meno te lo aspetti potrebbe capitare qualcosa di bello, di più importante di quello che avevi programmato...

  2. #2
    Se devi eseguire più operazioni puoi intervallarle da un'istruzione Doevents() che elabora i messaggi nella MessagePump, e questo è il metodo senza thread

    ES.:
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Me.Show()
    operazione1()
    ProgressBar1.Value = 33
    Application.DoEvents()
    operazione2()
    ProgressBar1.Value = 66
    Application.DoEvents()
    operazione3()
    ProgressBar1.Value = 100
    Application.DoEvents()
    'operazioni finite
    End Sub
    Sub operazione1()
    'fai calcoli
    End Sub
    Sub operazione2()
    'fai calcoli
    End Sub
    Sub operazione3()
    'fai calcoli
    End Sub

    Oppure se proprio vuoi usare i Thread dovresti caricare in blocco le operazioni da eseguire in un thread che viene eseguito all'inizio o quando vuoi tu.

    ES.:

    Dim t1 As New System.Threading.Thread(AddressOf CaricaDati)


    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Me.Show()
    t1.Start()
    'operazioni finite
    End Sub


    Sub CaricaDati()
    'Elabora quello che hai da elaborare qui
    'e fai andare avanti la progressbar
    'es:
    operazione1()
    ProgressBar1.Value = 33
    operazione2()
    ProgressBar1.Value = 66
    operazione3()
    ProgressBar1.Value = 100
    End Sub

    Sub operazione1()
    'fai calcoli
    End Sub
    Sub operazione2()
    'fai calcoli
    End Sub
    Sub operazione3()
    'fai calcoli
    End Sub


    Sia che tu usi uno o l'altro metodo mentre i dati si caricheranno tu potrai usare il form senza che questo si blocchi

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.