Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2013
    Messaggi
    2

    [VB.NET 2010]Eccezione System.InvalidCastException non segnalata in fase di debug

    Salve a tutti,
    recentemente ho scritto un programma di calcolo, dotato di verifica automatica degli aggiornamenti. Lo testo con la modalità debug e ottengo 0 errori e 0 warning, tutto liscio come l'olio. Il problema si presenta quando avvio il programma senza la "mediazione" di Visual Studio, ma andando direttamente nella cartella dove è stato compilato. Ottengo la schermata d'errore seguente:


    Il problema è che in debug non mi segnalava niente di tutto ciò, quindi non so esattamente in che riga si l'errore, se di un errore si tratta. In effetti se clicco su "Continua" il programma funziona correttamente. Come si può notare dal messaggio dell'eccezione, essa si verifica (se ho capito bene) quando il programma tenta di usare come argomento della subroutine Aggiorna (sotto riportata) la classe WebBrowserDocumentCompletedEventArgs, anche se guardando sulla documentazione ufficiale, fare ciò è ammesso.
    In pratica quando il programma si apre chiama la funzione Aggiornamento che fa caricare al webbrowser la pagina, e quando essa è completamente caricata, fa partire la subroutine Aggiorna.



    Idee? Consigli?
    Grazie In anticipo
    codice:
    Public Class Matematica
    
        Public Event DocumentCompleted As WebBrowserDocumentCompletedEventHandler
    
    Private Sub Matematica_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            Call Aggiornamento()
        End Sub   
    
        Public Function Aggiornamento()
            AddHandler WebBrowser1.DocumentCompleted, New WebBrowserDocumentCompletedEventHandler(AddressOf Aggiorna)
            WebBrowser1.Navigate("http://www.sitoaggiornamento.com/versione.html")
        End Function
    
        Private Sub Aggiorna(ByVal sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles MyBase.Load
            If My.Computer.Network.IsAvailable Then
                If WebBrowser1.DocumentText <> "1.01" Then
                    agg = MsgBox("Nuova versione disponibile: Aggiornare?", 1, "Aggiornamento")
                    If agg = 1 Then
                        WebBrowser1.Navigate("http://www.sitoaggiornamento.com/Matematica.exe")
                    End If
                End If
            End If
        End Sub
    End Class

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Intanto non capisco perché crei un handler per un oggetto che non hai creato dinamicamente e non usi direttamente il suo evento

    codice:
    Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
        ...
    End Sub
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2013
    Messaggi
    2
    Ok grazie, risolto con il tuo consiglio. E' la prima volta che mi trovo a lavorare con un WebBrowser e sulla documentazione non c'è scritto nulla di tutto ciò... non pensavo si potesse fare
    Grazie ancora!

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.