IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Beug dans un code pour une mise à jour


Sujet :

VB.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Amateur vb.net
    Inscrit en
    Avril 2012
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Amateur vb.net
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 99
    Points : 60
    Points
    60
    Par défaut Beug dans un code pour une mise à jour
    Bonjour, j'ai fait un système de mise à jour:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            My.Computer.Network.DownloadFile("http://zune.franceserv.com/telechargement/bin/version.txt", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\version.txt")
            Dim internet As New System.IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\version.txt")
            Dim web = internet.ReadLine
            internet.Close()
            Dim localnow As New System.IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\bin\version.txt")
            Dim local = localnow.ReadLine
            localnow.Close()
            Kill(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\version.txt")
            If web > local Then
                MsgBox("Une mise à jour a été détectée!" & vbNewLine & "Elle va être téléchargée", MsgBoxStyle.Information)
                Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\bin\updater.exe")
                Kill(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\bin\version.txt")
                My.Computer.Network.DownloadFile("http://zune.franceserv.com/telechargement/bin/version.txt", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\bin\version.txt")
                Me.Close()
            End If
        End Sub
    Mais une chose qui me parait étrange se produit. Il détecte la mise à jour et affiche la msgbox mais il n'effectue pas la suite du if. J'ai pu m'en apercevoir car le fichier updater.exe n'existe pas et il ne renvoie pas de message d'erreur ; et la fenêtre ne se ferme pas alors que j'ai mis "me.close".
    Auriez-vous une explication?

    PS: j'ai fait des points d'arrêt sur le process.start mais après celui-ci pas moyen de passer au point d'arrêt suivant.

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    bug connu de .net
    si une exception se produit dans l'event form.load sur un OS x64 l'erreur n'est pas bloquante (c'est le seul cas à priori)
    la solution est de mettre un try catch pour intercepter toi même l'erreur avant qu'elle ne soit étouffée, ou de mettre le code ailleurs
    tu verras alors l'erreur dans ton code

    d'une manière générale il faut mettre des try catch dans la plupart des membres

  3. #3
    Membre du Club
    Homme Profil pro
    Amateur vb.net
    Inscrit en
    Avril 2012
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Amateur vb.net
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 99
    Points : 60
    Points
    60
    Par défaut
    Ok merci de ton aide.

  4. #4
    Membre du Club
    Homme Profil pro
    Amateur vb.net
    Inscrit en
    Avril 2012
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Amateur vb.net
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 99
    Points : 60
    Points
    60
    Par défaut
    Par contre j'ai une autre question, si on fait beaucoup de téléchargement simultanés en vb.net, l'application ne répond plus. Elle remarche ensuite si on attend quelque seconde. Mais du coup on ne peut pas faire de système de progression avec des labels changeants ou progressbar puisque l'application ne répond pas pendant le téléchargement. Y-a-t-il un moyen d’empêcher de beuger?

  5. #5
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    l'interface est rafraichit (et répond) sur le thread principal, le même qui exécute ton code
    tant que du code de ton appli s'exécute sur le thread principal (jusqu'au end sub en gros) l'interface ne peut pas etre rafraichit

    il convient donc de ne mettre sur le thread principal que du code qui dure moins d'une seconde, et de déporter les traitements longs sur un autre thread

    voir system.threading.thread ou le backgroundworker qui est dans la boite à outils

    certaines classes ont des méthodes asynchrones qui démarrent un thread et t'avertissent de la fin de l'exécution par évènement ou callback (= pointeur de sub), il doit en l'occurence y avoir des méthodes asynchrones poru télécharger)
    je te conseille à ce propos de tester un new system.net.webclient et la méthode DownloadFileAsync plutot que network.downloadfile

  6. #6
    Membre du Club
    Homme Profil pro
    Amateur vb.net
    Inscrit en
    Avril 2012
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Amateur vb.net
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 99
    Points : 60
    Points
    60
    Par défaut
    Merci mais comment utiliser le system.net.webclient et le DownloadFileAsync?
    Et sinon comment faire en sorte que si on clique sur un button, le code présent dans le backgroundworker se déclenche?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. création d'un module vba pour une mise à jour access
    Par ponpon99 dans le forum VBA Access
    Réponses: 4
    Dernier message: 27/12/2013, 13h37
  2. [MySQL] Utiliser la syntaxe d'un INSERT pour une mise à jour
    Par Concombre Masqué dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 04/05/2009, 21h14
  3. [MySQL] Erreur de syntaxe pour une mise à jour
    Par naim2009 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 29/03/2009, 03h42
  4. Pb de sous-requête pour une mise à jour
    Par Balthos dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 05/03/2008, 09h13
  5. Réponses: 4
    Dernier message: 02/05/2006, 12h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo