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

Windows Forms Discussion :

[FW2.0][VB.net] backgroundworker


Sujet :

Windows Forms

  1. #1
    Membre du Club Avatar de grand_prophete
    Inscrit en
    Avril 2005
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 85
    Points : 40
    Points
    40
    Par défaut [FW2.0][VB.net] backgroundworker
    Bonjour.

    J'utilise en ce moment la methode backgroundworker, seulement si il n'y a aucun évènement dans la fonction lancée dans le backgroundworker, au bout de quelques secondes j'ai un message d'erreur Timeout. Comment le résoudre ? Il y a des cas dans mon application ou il attendra un évènement qui n'arrivera pas avant longtemps.

    Merci

  2. #2
    Xno
    Xno est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 71
    Points : 83
    Points
    83

  3. #3
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    es-tu sûr que le timout viens du balcground worker lui meme?
    celui n'a pas de timout à ce que je sache mais les methodes qu'il appelle, un appel en base, eventuellement mais lui n'en n'as pas il me semble.

    il ne fait de lancer tout ce qui est dans DoWork dans un thread.

    tu as un bout de code et plus d'explications à donner?
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  4. #4
    Membre du Club Avatar de grand_prophete
    Inscrit en
    Avril 2005
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 85
    Points : 40
    Points
    40
    Par défaut
    Bonjour

    Ici c'est le code pour ma fonction (c'est une mesure de délai entre 2 signaux que je dois afficher dans un TextBox).

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    PrivateSub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
    
    Dim worker As System.ComponentModel.BackgroundWorker = CType(sender, System.ComponentModel.BackgroundWorker)
    e.Result = delais1(worker, e.Result)
    EndSub
    
    PrivateSub backgroundWorker1_RunWorkerCompleted(ByVal sender AsObject, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
     
    Delai1.Text = e.Result.ToString
    EndSub
    
    PublicFunction delais1(ByVal worker As System.ComponentModel.BackgroundWorker, ByVal e As System.ComponentModel.DoWorkEventArgs) AsDouble
    
    Dim max AsDouble = 0.3
    Dim min AsDouble = 0.001
    Dim valeurdelai AsString
    myTask = New Task
     
    myTask.CIChannels.CreateTwoEdgeSeparationChannel("Dev2/ctr0", "", min, _
    max, CITwoEdgeSeparationFirstEdge.Rising, CITwoEdgeSeparationSecondEdge.Rising, CITwoEdgeSeparationUnits.Seconds)
    counterInReader = New CounterReader(myTask.Stream)
    Dim data AsDouble = counterInReader.ReadSingleSampleDouble()
    valeurdelai = data.ToString
    Return valeurdelai
    EndFunction
    
    Et je l'appelle de cette maniere dans un timer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    WhileNotMe.BackgroundWorker1.IsBusy
    BackgroundWorker1.RunWorkerAsync()
    EndWhile
    

  5. #5
    Membre du Club Avatar de grand_prophete
    Inscrit en
    Avril 2005
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 85
    Points : 40
    Points
    40
    Par défaut
    En fait le message d'erreur complet c'est
    "Specified operation did not complete, because the specified timeout expired".
    C'est un probleme que je n'ai pas eu avant d'utiliser le backgroundworker.
    Avant j'utilisais la methode des délégués (pas assez performante) et je n'ai pas eu cette erreur, je viens de refaire un test.

  6. #6
    Membre du Club Avatar de grand_prophete
    Inscrit en
    Avril 2005
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 85
    Points : 40
    Points
    40
    Par défaut
    Bon ben un simple try catch a résolu le probleme.

Discussions similaires

  1. [VB.NET] BackgroundWorker trés lent
    Par Morphee_ dans le forum Framework .NET
    Réponses: 14
    Dernier message: 15/11/2012, 10h21
  2. [VB.net] backgroundworker targetexception
    Par nasty dans le forum Windows Forms
    Réponses: 6
    Dernier message: 22/12/2009, 13h50
  3. [.NET 2.0] Probleme de BackgroundWorker
    Par Aspic dans le forum Windows Forms
    Réponses: 5
    Dernier message: 22/03/2007, 15h13
  4. [VB.net] backgroundworker et UC à 100%
    Par grand_prophete dans le forum Windows Forms
    Réponses: 3
    Dernier message: 15/05/2006, 15h39
  5. [FW2.0][VB.net] évenement front montant
    Par grand_prophete dans le forum Windows Forms
    Réponses: 9
    Dernier message: 09/05/2006, 17h25

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