Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di Fado84
    Registrato dal
    Feb 2004
    Messaggi
    347

    [VB2005] Mettere in pausa un ciclo in attesa di un evento

    Buonasera a tutti, da poco programmo con vb 2005..
    arrivo subito al quesito:
    tramite un ciclo carico ogni volta una pagina web ed una volta caricata ogni singola pagina devo eseguire delle operazioni all'interno del sorgente della pagina web caricata.. il problema è quindi interrompere il ciclo, aspettare che la pagina si carichi, esegua quelle operazioni che devo fare e alla fine di tutto ciò devo caricare un'altra pagina e rifare tutto da capo...
    Per fare ciò ho "ideato" questo metodo e volevo sapere se esiste un modo più efficiente... dato che ho utilizzato solo quei comandi che conosco..

    codice:
    Dim PaginaCaricata As Boolean = False
    
    Private Sub WebBrowser1_DocumentCompleted(..) Handles WebBrowser1.DocumentCompleted
            PaginaCaricata = True
    End Sub
    
    
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    
           For j = 1 To 10
                    PaginaCaricata = False
                    WebBrowser1.Url = New uri(pagina(j)) 
                    Do While PaginaCaricata = False
                        Application.DoEvents()
                    Loop
    
                   ' e qui metto le operazioni che devo eseguire sulla pagina..
       
          Next
    
    end sub
    questo metodo funziona.. volevo sapere se era un metodo intelligente per intercettare gli eventi!

    Grazie mille!

  2. #2
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,580

    Re: [VB2005] Mettere in pausa un ciclo in attesa di un evento

    Originariamente inviato da Fado84
    Buonasera a tutti, da poco programmo con vb 2005..
    arrivo subito al quesito:
    tramite un ciclo carico ogni volta una pagina web ed una volta caricata ogni singola pagina devo eseguire delle operazioni all'interno del sorgente della pagina web caricata.. il problema è quindi interrompere il ciclo, aspettare che la pagina si carichi, esegua quelle operazioni che devo fare e alla fine di tutto ciò devo caricare un'altra pagina e rifare tutto da capo...
    Per fare ciò ho "ideato" questo metodo e volevo sapere se esiste un modo più efficiente... dato che ho utilizzato solo quei comandi che conosco..

    codice:
    Dim PaginaCaricata As Boolean = False
    
    Private Sub WebBrowser1_DocumentCompleted(..) Handles WebBrowser1.DocumentCompleted
            PaginaCaricata = True
    End Sub
    
    
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    
           For j = 1 To 10
                    PaginaCaricata = False
                    WebBrowser1.Url = New uri(pagina(j)) 
                    Do While PaginaCaricata = False
                        Application.DoEvents()
                    Loop
    
                   ' e qui metto le operazioni che devo eseguire sulla pagina..
       
          Next
    
    end sub
    questo metodo funziona.. volevo sapere se era un metodo intelligente per intercettare gli eventi!

    Grazie mille!
    si, lo ho usato parecchie volte anche io
    qusto sistema è il piu' semplice, ma poi se muovi la maschera sfarlfalla un po'

    un0'altro modo è di usare i thread, tu con il 2005 hai un oggetto: "backgroundworker" che lavora in background e lo puoi gestire come vuoi...ti consiglio di studiartelo
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  3. #3
    Utente di HTML.it L'avatar di Fado84
    Registrato dal
    Feb 2004
    Messaggi
    347
    grazie per la risposta.. è proprio vero, sfarfalla.. adesso mi guardo il threading ed il BackgroundWorker grazie mille!!!!!!!!!!!!

  4. #4
    Utente di HTML.it L'avatar di Fado84
    Registrato dal
    Feb 2004
    Messaggi
    347
    salve a tutti!
    ho provato a guardare il controllo ma nn riesco a farlo funzionare..
    lo scopo di questa parte del mio software è estrarre da una pagina web dei nomi e poi metterli in un dataset.. ho creato una sub che scarica la pagina web e una sub che cerca il nome...
    utilizzo un controllo webbrowser e controllo che la pagina caricata sia quella giusta tramite:
    codice:
     
    WebBrowser1.DocumentTitle
    all'interno del metodo dowork del backgroundworker metto le mie sub... e poi con un button lo faccio lavorare:

    codice:
     BackgroundWorker1.RunWorkerAsync()
    Il problema è che mi restituisce un errore quando vado a verificare che la pagina web caricata sia quella corretta:
    codice:
    If WebBrowser1.DocumentTitle = "XXXXXXX" Then
                        CercaTitolo()
    End If
    L'errore che mi restituisce è il seguente:

    InvalidCastException non è stata gestita dal codice utente
    Cast specificato non valido

    e non riesco a venirne a capo.......

    poi avevo un'altra domanda....
    il controllo webbrowser se lo volessi generare da codice e non dalla casella strumenti come potrei intercettare l'evento DocumentCompleted ????

    GRAZIE MILLE!!!!!!!

  5. #5
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,580
    esattamente DOVE ti da errore?

    sei troppo generico quando dici che non appena cerchi di sapere se è la tua pagina...
    dai dimmi l'errore, e i dettagli dell'errore
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  6. #6
    Utente di HTML.it L'avatar di Fado84
    Registrato dal
    Feb 2004
    Messaggi
    347
    ciao!
    allora, il debug si blocca su:

    codice:
    If WebBrowser1.DocumentTitle = "XXXXXXX" Then
    e si apre una finestra di allerta con il seguente errore:
    InvalidCastException non è stata gestita dal codice utente
    Cast specificato non valido

    l'errore è quando chiamo WebBrowser1.DocumentTitle....
    io al backgroundworker nn passo nulla... ed il webbrowser è un componente che ho sulla form... devo passarlo come argomento del webbrowser? ho provato ma da lo stesso errore......

    grazie

  7. #7
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,580
    guarda bene l'errore che ti da
    sono sicuro che dice altro...tipo :
    "impossibile convertire il tipo <string> in ......."

    dai QUESTO è fondamenteale per capire l'errore


    seconda cosa:
    sei sicuro che webbrowser.docuenttitle ti restituisce il titolo del documento? a quanto pare se ti ha dato errore gestisce altro,prova a controllare
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

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.