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

    [VB Express 2008] Problema Attesa Caricamento Pagina

    Salve a tutti,
    ho ancora bisogno del vostro aiuto. Da un po' sto cercando di migliorare un mio programma scritto in VB 2008 che prevede l'esecuzione di alcune operazioni su di un Webbrowser. Fino ad ora avevo messo il seguente codice per far si che prima di eseguire determinate operazioni sulla pagina web visualizzata, essa fosse completamente caricata:

    Dim time As DateTime = Now
    Dim secs As Integer = 5

    While sec > Now.Subtract(time).TotalSeconds
    Application.DoEvents()
    End While

    (si può definire una sorta di ciclo di ritardo o ciclo di attesa)

    Tuttavia a causa della mia connessione internet che risulta essere non molto veloce, 5 secondi possono non essere sufficienti per il completo caricamento della pagina e di conseguenza tutte le operazioni che dovrebbero venir fatte dopo i 5 secondi vengono tutte sfasate e il programma si blocca. Se invece la pagina web completa il caricamento entro quei 5 secondi tutto fila liscio. Se alzassi il tempo a 10 secondi, farebbe diventare il programma praticamente inutile perchè diventerebbe troppo lento.
    Quello che chiedo io è se esiste una soluzione più elegante al mio problema, ovvero se vi è un qualcosa che faccia partire le operazioni sulla pagina web solo una volta che si è completamente cariata la pagina web.

    Grazie in anticipo.

    P.S. Potrbbe c'entrare qualcosa il Webbrowser_DocumentCompleted?

  2. #2
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    C'è una proprietà per monitorare lo stato del caricamento della pagina e si chiama WebBrowser1.ReadyState e può assumere cinque valori:
    -Complete (pagina completamente caricata)
    -Interactive (le parti della pagina caricate sono sufficienti a garantire un minimo di interazione con l'utente, ad esempio con dei click sui link presenti);
    -Loaded (il documento è caricato e inizializzato, ma non tutti i dati sono ancora stati ricevuti);
    -Loading (il documento è in caricamento);
    -Uninitialized (nessun documento è stato aperto).

    Quindi invece di scrivere:
    codice:
    While sec > Now.Subtract(time).TotalSeconds 
    Application.DoEvents() 
    End While
    metti questo:

    codice:
    While WebBrowser1.ReadyState = WebBrowserReadyState.Complete
    Application.DoEvents()
    End While
    Piccola informazione tecnica: quando posti del codice usa gli appositi tag come ho fatto io; altrimenti i moderatori ti scannano: contattane uno e fatti mettere apposto il post.
    Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
    La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
    Occhio per occhio uguale... occhio al quadrato

  3. #3
    Grzie melle delle info!!! si sono rilveato molto utili. Provvederò ad informarmare gli admin per la faccenda del codice non riqudrato.

    Piccola nota:

    codice:
    While WebBrowser1.ReadyState = WebBrowserReadyState.Complete  
    Application.DoEvents()         
    End While
    Con questo codice in teoria rimarrà sempre fermo perchè vi è l'uguale. In teoria secondo me si dovrebbe mettere:

    codice:
    While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete  
    Application.DoEvents()         
    End While
    ovvero fino a che la pagina del Webbrowser non si è caricata completamente attendi il suo caricamento?

    Comunque ora provo e ti saprò dire

  4. #4
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    Hai ragione: quello che avevo scritto io non aveva senso

    Ciao.
    Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
    La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
    Occhio per occhio uguale... occhio al quadrato

  5. #5
    Si l'ho provato e infatti funziona mettendo "<>" e non "=".

    Comunque grazie lo stesso, sei stato gentilissimo ad aiutarmi.

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.