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 :

[VB.NET 2.0] Cross-Thread Exception


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 62
    Points : 53
    Points
    53
    Par défaut [VB.NET 2.0] Cross-Thread Exception
    Bonjour tout le monde, bon j'ai un gros probleme et je commence a deseperer Donc voila j'explique un peu ^^:
    J'ai une form principale(nommé FrmMain) qui permet de lancer la lecture d'un fichier avec un combobox.J'ai plusieurs classe donc une avec un timer qui regarde toute les secondes si une action doit etre faite.Si l'action doit etre faite cela declanche un evenement(avec un string en parametre).Donc lorsque levenement se declenche j'ai besoin d'executer un sub de la form principale et c'est donc la que il y a une erreur de multi thread, sa me dit que l'objet auquel essaye d'acceder son sur un autre thread.Je pense que cela vient du fait que j'envoie un string en parametre a l'evenement.

    Mais je chercher depuis des heures et j'y arrive vraiment.Si personne ne comprend mon probleme je peux mettre des bout de code.Merci beaucoup et je vous souhaite un bon week-end.

  2. #2
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Comme tu es sous 2.0, tu peux te tourner vers le tout nouveau BackGroundWorker

    voir aussi : http://glarde.developpez.com/dotnet/bgworker/
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 62
    Points : 53
    Points
    53
    Par défaut
    lol le probleme c'est justement que je ne lance aucun thread en rapport avec ces fonctions.
    C'est bien sa le probleme, je ne voit pas du tout pourquoi il me fait une telle erreur

    edit : voici lerreur precise :
    Cross-thread operation not valid: Control '' accessed from a thread other than the thread it was created on.
    double edit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub ClsRecProg_TimeToRec(ByVal StrNom As String, ByVal StrChaine As String) Handles ClsRecProg.TimeToRec
            TsCbChaine.SelectedItem = StrChaine  <--l'erreur se produit a cette ligne
            Record&#40;&#41;
        End Sub

  4. #4
    Membre actif Avatar de DeusXL
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 300
    Points : 272
    Points
    272
    Par défaut
    C'est quel type de Timer ? System.Timers.Timer ? System.Threading.Timer ?
    Car à ma connaissance, les seuls timers valides avec les Windows Forms sont les System.Windows.Forms.Timer... Mais si tu fais une opération en même temps, ton timer ne se déclenchera jamais, et là il faudra te tourner vers la solution proposée par neguib.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 62
    Points : 53
    Points
    53
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private WithEvents Timer As New Timers.Timer
    Donc c'est un System.Timers.Timer.
    Etant donné que le timer ce trouve dans une classe je n'ai pas aces au System.Windows.Forms.Timer.
    Y-a-t-il une difference entre un System.Timers.Timer et un System.Threading.Timer ?

    Merci

  6. #6
    Membre actif Avatar de DeusXL
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 300
    Points : 272
    Points
    272
    Par défaut
    Citation Envoyé par guillaume1998
    Etant donné que le timer ce trouve dans une classe je n'ai pas aces au System.Windows.Forms.Timer.
    Y-a-t-il une difference entre un System.Timers.Timer et un System.Threading.Timer ?

    Merci
    Pour ce qui est en gras => Pourquoi donc ? Qu'est-ce qui t'empêcherais d'utiliser System.Windows.Forms.Timer ? Tu ne peux pas modifier la classe ? Je ne comprends pas trop je l'avoue (je sais qu'en ce moment ça fait un peu phrase récurrente chez moi).
    Pour ce qui est en italique => Article à ce sujet. Cependant si j'avais à résumer, je dirais que le résultat est à peu près le même pour une utilisation de pas très haut niveau...

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 62
    Points : 53
    Points
    53
    Par défaut
    Bon je vais essayer avec un System.Windows.Forms.Timer alors ^^

    Je vous tiens au courant.


    Bon week-end

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 62
    Points : 53
    Points
    53
    Par défaut
    Salut, voila je n'arrive pas a utilisé System.Windows.Forms.Timer car le namespace windows n'est pas present.Je pense que cela vient du fait que la classe est dans un projet de "Bibliotheque de classe".J'ai essayer de le importer mais je n'y arrive pas.
    Du coup je vais me pencher sur les System.Threading.Timer
    Je vous tiendrait au courant.

  9. #9
    Membre actif Avatar de DeusXL
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 300
    Points : 272
    Points
    272
    Par défaut
    Citation Envoyé par guillaume1998
    Salut, voila je n'arrive pas a utilisé System.Windows.Forms.Timer car le namespace windows n'est pas present.
    J'ai une form principale(nommé FrmMain) qui permet de lancer la lecture d'un fichier avec un combobox
    Hum aux dernières nouvelles, System.Windows.Forms.Timer était dans le même espace de nom que Form et ComboBox !
    J'avoue que je saisis pas trop là...

    Du coup je vais me pencher sur les System.Threading.Timer
    Ca m'étonnerait qu'un Threading.Timer soit très recommandé pour éviter les Cross-Thread illégaux... M'enfin je les connais pas à fond non plus donc...

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Points : 621
    Points
    621
    Par défaut
    Voilà un lien vers une question qui contient un exemple détaillé d'accès à une contrôle à partir d'un timer :
    http://www.developpez.net/forums/viewtopic.php?t=439412
    On ne peut pas faire boire un âne qui n'a pas soif.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 62
    Points : 53
    Points
    53
    Par défaut
    Pour DeuxXL :


    NicolasG : merci je vais regarde ce que tu ma donné

  12. #12
    Membre actif Avatar de DeusXL
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 300
    Points : 272
    Points
    272
    Par défaut
    Citation Envoyé par guillaume1998
    Pour DeuxXL :
    Alors ajoutes simplement la référence System.Windows.Forms.dll à ton projet...
    Mais comme visiblement ton timer n'est pas dans le même projet que ta Form (j'ai dis pas dans le même projet, je sais que c'est pas la même classe mais les références c'est par projet).

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 62
    Points : 53
    Points
    53
    Par défaut
    oui c'est bien ce quil me semblait

    Je vais regarde sa ce soir des que j'aurais finit de bosser.

    merci en tout cas de m'aidé

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 62
    Points : 53
    Points
    53
    Par défaut
    Bon voila c'est regler L'utilisation d'un System.Windows.Forms.Timer a regler mon probleme

    Donc merci a vous trois : neguib, DeusXL, NicolasG

    @Bientot

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

Discussions similaires

  1. [C++ .NET] Cross Threading, ListBox
    Par Cyr69 dans le forum C++
    Réponses: 2
    Dernier message: 23/01/2009, 18h06
  2. Réponses: 6
    Dernier message: 11/05/2006, 17h00
  3. [VB.NET]Erreur "invalid cross-thread operation"
    Par NicolasJolet dans le forum Windows Forms
    Réponses: 6
    Dernier message: 05/04/2006, 13h38
  4. Réponses: 9
    Dernier message: 31/05/2005, 11h05
  5. [thread] Exception non catchée
    Par mammistegon dans le forum Concurrence et multi-thread
    Réponses: 3
    Dernier message: 22/11/2004, 22h43

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