Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1762 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  objets et threads

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

objets et threads

n°1797301
nORKy
Grmmph...
Posté le 08-10-2008 à 16:34:46  profilanswer
 

Bonjour, je débute dans le langage C#
J'ai un problème avec un thread qui  ne veut pas accéder à une classe qui a été créé par son processus père.
Voici le schema (le point de départ est dans la classe 'Ailleur'

Code :
  1. class A
  2. {
  3.   public B objetB = null; // peut importe la définition de B. (je ne la connais pas)
  4.   public Thread thread = null;
  5.   public A()
  6.   {
  7.     objetB = new B();
  8.     objetB.unefonction(); // Pas de problème
  9.   }
  10.   public bool start()
  11.   {
  12.     thread = new Thread(new ThreadStart(this.loop));
  13.     thread.start();
  14.   }
  15.   public void loop()
  16.   {
  17.     objetB.unefonction(); // Exception parlant de problème de cast d'un objet COM en une interface
  18.   }
  19. }
  20. class Ailleurs
  21. {
  22.   public myrun() // ici, c'est le thread principale
  23.   {
  24.     A objetA = new A();
  25.     A.start();
  26.   }
  27. }


 
quelq'un peut m'expliquer ??

mood
Publicité
Posté le 08-10-2008 à 16:34:46  profilanswer
 

n°1797380
moi23372
Posté le 08-10-2008 à 18:45:33  profilanswer
 

oui c'est tout à fait normal.
Depuis .NET 2.0, un thread ne peut pas accéder au objet créer par un autre processus sous peine de se ramasser une exception "Cross Thread" machin.  
Pas le choix, pour contourner ce problème, faut passer par des delegate.


---------------
quand un homme raisonne mal c'est qu'il n'a pas les données pour raisonner mieux (diderot)
n°1797479
nORKy
Grmmph...
Posté le 08-10-2008 à 22:07:50  profilanswer
 

hmm... J'ai pourtant fait un delegate.. ca n'a rien changé.
 
D'ailleurs, l'exception n'a rien à voir avec un Cross thread.
L'exception me dit qu'il essai de caster un Composant COM 'machin.truc.BiduleClass' en interface 'machin.truc.BiduleClass' ..
 
C'est un librairie dont je n'ai pas les sources. Ma class que j'essai d'utiliser peut être un composant COM  ?
 
Mais, je sais que le problème vient des thread, car, sans thread, ca passe.
 
Moi qui vient de la programmation unix, j'ai du mal à comprendre la notion de thread sous windows qui n'est pas la même que sous unix. Les thread windows ont l'air plus proche d'un fork (mais pas complètement) qu'un thread unix..

n°1798443
moi23372
Posté le 10-10-2008 à 19:57:38  profilanswer
 

la notion de thread sous Windows est la même que celle en UNIX. Il s'agit d'une instance d'exécution s'exécutant dans le même processus (comme un UNIX). Le fork est le démarrage d'un second processus.  
 
Maintenant, ton objet COM, il fait quoi exactement? Le problème vient peut être de la aussi, il ne supporte peux être pas une exécution dans un Thread.


---------------
quand un homme raisonne mal c'est qu'il n'a pas les données pour raisonner mieux (diderot)

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  objets et threads

 

Sujets relatifs
pb avec la gestion des threads et le resultat sur la sortie stdstd vector : tracking des adresses des objets contenus
Sérialiser un objet contenant des objets.Problème d'utilisation des Threads avec lib javacomm
Création de site de vente [ Galerie des Objets en vente ]Modelisation UML de threads
[ASP.NET] Accéder aux objets du Global.asax à partir d'un codefile ?probléme de methode avec les threads
Lib3ds & objets X-Refcreer un grand nombre d'objets
Plus de sujets relatifs à : objets et threads


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR