Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    48

    [VB.NET] Comparsa progressbar quando l'applicazione è in attesa!

    Mi riferisco sempre al mio plug-in in word che ormai ho terminato ma lo sto perfezionando.
    A volte succede che nel momento in cui clikko sul tasto, l'applicazione attente un po' fino a quando non viene stabilita la connessione.
    Io vorrei far comparire un qualcosa che faccia capire all'utente che l'applicazione sta lavorando.
    Per ora ho realizzato un form con una progressbar che invita l'utente ad attentedere ma succede una cosa strana. Quando l'applicazione è in attesa il form contenente la progressbar compare ma mi carica l'oggetto progressbar solo quando l'applicazione ha terminato la sua attesa quindi è come se il caricamento degli oggetti del form si bloccasse proprio perchè l'applicazione sta lavorando per altre cose...

    Come potrei risolvere questo problema?

    Grazie in anticipo

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    48
    UPPPP

    Ho capito che devo ricorrere ai thread ma come posso far visualizzare il form(progressbar) su un altro processo mentre continua l'elaborazione della mia applicazione?

  3. #3
    Utente bannato
    Registrato dal
    Mar 2007
    Messaggi
    190

    ordine operazioni in attesa...

    ciao [joseph82]

    hai provato ha far carcare la FORM di attesa prima?

    Se fai caricare prima la Finestra di attesa,
    rispetto alla reale operarione che fà attende,
    una volta caricata la Finestra di attesa, effettuerà la seconda operazione.

    Potresti provare... buona fortuna.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    48
    Si ho provato, mi visualizza il form ma fino a quando non finisce l'attende non mi carica l'oggetto progresbar che nel frattempo viene sostituito da uno sfondo bianco...

    L'oggetto progresbar me lo carica solo al comparire della msgbox di conferma e cioè quando l'applicazione ha finito di elaborare.

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quando aggiorni il valore della progressbar prova ad eseguire una DoEvents
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    48
    Fatto ma non ho risolto niente. la progressbar rimane bloccata fino a quando non compare la msgbox di conferma!
    Immagini allegate Immagini allegate

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    48
    Come si vede dall'immagine precedente la progressbar è bloccata!

    Quersto invece è quello che avviene appena compare la msgbox....
    Immagini allegate Immagini allegate

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Dato che non ho presente il codice che viene eseguito tra la creazione della barra e la msgbox, dovresti mostrarlo ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    48
    Ecco qui!

    codice:
    Private Sub MyButtonSave_Click(ByVal Ctrl As Microsoft.Office.Core.CommandBarButton, ByRef CancelDefault As Boolean) Handles MyButtonSave.Click
            Dim progress As New frm_progbar
    
            progress.Visible = True
            progress.Refresh()
    
            Dim Custom_Doc_Prop As DocumentProperties
            Dim Doc_Prop As Object
            Dim Risp As MsgBoxResult
            Dim Flag As Boolean
            Dim IndirizzoWS As String
            Dim objServizio As Object
            Dim errore_conn As String = ""
            Dim dati_con_dm As Hashtable
    
            objServizio = New SrvWebSigMil.Service
    
            'Recupero dal documento word il nome dell'utente connesso a SIgMil e l' ID_DOC
            Try
                Custom_Doc_Prop = CType(applicationObject.ActiveDocument.CustomDocumentProperties, Office.DocumentProperties)
            Catch e As Exception
                MsgBox("Non è possibile utilizzare il comando in quanto nessun documento risulta aperto.", MsgBoxStyle.Exclamation, "SIGMIL")
            End Try
    
            Doc_Prop = Custom_Doc_Prop
    
            If (Custom_Doc_Prop.Count <> 0) Then
                Utente_Conn = Doc_Prop.Item("UTENTE").Value()
                ID_Doc = Doc_Prop.Item("ID_DOC").Value()
                'CANCELLO LE PROPRIETà PERSONALIZZATE DEL DOCUMENTO WORD
                Doc_Prop.Item("UTENTE").Delete()
                Doc_Prop.Item("ID_DOC").Delete()
            End If
    
            If (Utente_Conn = "") And (ID_Doc = 0) Then
                MsgBox("Non è possibile utilizzare questa funzione per una delle seguenti cause:" & vbLf & vbLf & "1) Il documento aperto non appartiene al sistema SIGMIL;" & vbLf & "2) Il documento appartiene al sistema SIGMIL ma è stato aperto in modalità di visualizzazione,in tal caso scegliere l'opzione 'blocca e scarica documento' per modificarlo e aggiornarlo.", MsgBoxStyle.Exclamation, "SIGMIL")
                Exit Sub
            End If
    
            If Not File.Exists(WebService_Url) Then
                Flag = sw_file_create()
                If Flag = False Then
                    MsgBox("Si è verificato un errore nella creazione del file che contiene l'indirizzo del servizio web.", MsgBoxStyle.Critical, "SIGMIL - Utente connesso: " & Utente_Conn)
                    Exit Sub
                Else
                    MsgBox("Impostare nel file 'C:\sigmil_plugin_url.txt' l'indirizzo del servizio web.", MsgBoxStyle.Exclamation, "SIGMIL - Utente connesso: " & Utente_Conn)
                    Exit Sub
                End If
            Else
                IndirizzoWS = sw_file_read()
                If IndirizzoWS = "" Then
                    MsgBox("Impostare nel file 'C:\sigmil_plugin_url.txt' l'indirizzo del servizio web.", MsgBoxStyle.Exclamation, "SIGMIL - Utente connesso: " & Utente_Conn)
                    Exit Sub
                Else
                    Try
                        objServizio.url = IndirizzoWS
                    Catch e As Exception
                        MsgBox("L'indirizzo del servizio web impostato nel file 'C:\sigmil_plugin_url.txt' non è valido:verificare.", MsgBoxStyle.Exclamation, "SIGMIL - Utente connesso: " & Utente_Conn)
                        Exit Sub
                    End Try
                End If
            End If
    
            'SALVO IL DOCUMENTO WORD sull'HD
            applicationObject.ActiveDocument.SaveAs(tempfolder & "temp.doc")
    
            'FACCIO UNA COPIA DEL DOCUMENTO WORD SALVATO COSI NON MI DA ERRORE (FILE IN USO DA UN ALTRO PROCESSO)
            File.Copy(tempfolder & "temp.doc", tempfolder & "temp#.doc", True)
    
            Dim FilePath As String
            Dim FileNum As Integer
    
            FilePath = tempfolder & "temp#.doc"
    
            FileNum = FreeFile()
    
            FileOpen(FileNum, FilePath, OpenMode.Binary, OpenAccess.Read)
    
            Dim TotalFileSize As Long
            Dim TotalBytesWritten As Long
            Dim instance As EventLog
            TotalFileSize = LOF(FileNum)
    
            Dim bdata(TotalFileSize - 1) As Byte
    
            Try
                While (Not EOF(FileNum))
                    TotalBytesWritten = TotalFileSize
                    If TotalBytesWritten > 0 Then
                        If (TotalBytesWritten > UBound(bdata)) Then
                            TotalBytesWritten = UBound(bdata) + 1
                        Else
                            TotalFileSize = TotalBytesWritten
                        End If
                        FileGet(FileNum, bdata)
                        TotalBytesWritten = TotalFileSize - TotalBytesWritten
                    End If
                End While
            Catch e As Exception
                MsgBox("Si è verificato un errore,non è possibile completare l'aggiornamento del documento.", MsgBoxStyle.Critical, "SIGMIL - Utente connesso: " & Utente_Conn)
            Finally
                FileClose(FileNum)
                File.Delete(tempfolder & "temp#.doc")
            End Try
    
            Risp = MsgBox("Si conferma l'aggiornamento del presente documento?", MsgBoxStyle.YesNo, "SIGMIL PlugIn v1.0 - Utente connesso: " & Utente_Conn)
    
            If Risp = MsgBoxResult.Yes Then
                'Eseguo la connessione a DM tramite servizio web
                Try
                    errore_conn = objServizio.Conn_Dm(ID_Doc, Utente_Conn, bdata, TotalFileSize)
                Catch e As Exception
                    MsgBox("Il Servizio Web non è raggiungibile, controllare le impostazioni di rete e che l'indirizzo inserito nel file 'C:\sigmil_plugin_url.txt' sia corretto.", MsgBoxStyle.Exclamation, "SIGMIL - Utente connesso: " & Utente_Conn)
                    Exit Sub
                End Try
            End If
        End Sub

    Anche quando premo yes per confermare, l'applicazione riprende ad elaborare e si riblocca la progressbar fino a quando non termina l'elaborazione!

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    E la

    DoEvents

    dove l'hai messa?

    Dove viene aggiornato il valore della progressbar ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.