begin process at 2012 02 09 11:43:31
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C#

 > 

Archives

 > 

.NET

 > 

Ce qu'on a le droit et pas le droit dans un thread...


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Ce qu'on a le droit et pas le droit dans un thread...

mardi 14 mars 2006 à 21:32:39 | Ce qu'on a le droit et pas le droit dans un thread...

cyrare

Membre Club
Bonjour,

On voit pas mal de problèmes liés au cross threading, et à chacun de ces problèmes, un rapide tour sur le tuto de ce site fait gagner un précieux temps. Mais comme tout bon tuto, il explique pas forcément grand chose...

(Soit A le thread principal et B le thread secondaire lancé par A)

On y apprend qu'on peut pas modifier la valeur d'un Win Form A à partir de B.

Mais (Quelques exemples) :

1/ A-t-on le droit de modifier un bool de A depuis B ?
2/ A-t-on le droit de lancer un Dispose() d'un objet de A depuis B ?
3/ A-t-on le droit de modifier un bool de B depuis A ?
4/ A-t-on le droit d'instancier une classe déclarée en A depuis B ?

Et plus généralement :

5/ Existe-t-il un truc bien complet qui explique ce qu'on a le droit de faire et de pas faire ? Je trouve nulle part de réponse précise à ce sujet... :(

Et si quelqu'un a le courage :

6/ Pourquoi le cross-thread est interdit, qu'est ce que ça change dans la machine interne de passer par un delegate ? Pourquoi la framework le fait pas tout seul ? (Comme sur la 1.x d'ailleurs)

Merci de vos lumières, ça va vachement m'éclairer. Je n'aime pas savoir faire un truc sans comprendre... :)

A+
mardi 14 mars 2006 à 23:12:02 | Re : Ce qu'on a le droit et pas le droit dans un thread...

MorpionMx

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
Salut,

C'est en effet un tutorial donnant la base de la "trousse de secours en cas de probleme de cross-threading". Je suis d'accord avec toi, il doit y manquer beaucoup de choses. C'est surtout pour eviter de partir dans tous les sens, et aller l'essentiel : modifier les propriétés d'un Control depuis un autre Thread. Cependant, je suis pret a le modifier et a le completer des que je trouve des choses interessantes a y ajouter.
Revenons-en a tes questions.

D'apres ce qu'on trouve ici 


Windows Forms uses the single-threaded apartment (STA) model because Windows Forms is based on native Win32 windows that are inherently apartment-threaded. The STA model implies that a window can be created on any thread, but it cannot switch threads once created, and all function calls to it must occur on its creation thread. Outside Windows Forms, classes in the .NET Framework use the free threading model. For information about threading in the .NET Framework, see Threading.

The STA model requires that any methods on a control that need to be called from outside the control's creation thread must be [...] (executed on) the control's creation thread. [...]



Cela peut repondre a plusieurs de tes questions

Modifier un booleen d'un thread a un autre :  Oui, un booleen peut etre modifié car il n'entre pas dans le cadre des phrases citées en gras ci-dessus. Donc la modification d'un booleen d'une thread a un autre ne pose a priori pas de probleme. Je viens de faire un essai, et il n'a pas bronché.

Appeler Dispose() d'un thread a un autre :  Tout depend... Le Dispose() sur un Control créé par un thread et ajouté a la fenetre créée par ce thread, non. Le Dispose d'une autre classe, n'héritant pas de la classe Control, je dirais que oui.

Je ne pense pas que tu trouveras une bible du cross-threading, le mieux etant que tu fasses tes essais par toi meme, pour voir ce que tu peux faire ou ne pas faire.


Mx
MVP C#
 

mercredi 15 mars 2006 à 00:39:43 | Re : Ce qu'on a le droit et pas le droit dans un thread...

cyrare

Membre Club
Merci pour ta réponse. C'est super clair. Je vais regarder ce qui fait partie du STA ou n'en fait pas partie.

Quant à ton tutorial, ce n'était en aucun cas un quelconque reproche, au contraire, les tutos qui n'expliquent pas grand chose et qui passent direct à l'essentiel sont les plus compréhensibles. J'ai compris beaucoup de choses grâce à lui. Malgré tout, si on veut fouiller un peu plus loin, il ne suffit plus, et c'est normal, ce n'est pas son role.

Encore merci ! :)
mercredi 15 mars 2006 à 09:56:36 | Re : Ce qu'on a le droit et pas le droit dans un thread...

MorpionMx

Membre Club Administrateur CodeS-SourceS
T'iqnuiete, je n'ai aucunement pris ca comme un reproche. Et je suis tout a fait d'accord avec toi.  

Mx
MVP C#
 



Cette discussion est classée dans : modifier, droit, thread, problèmes, cross


Répondre à ce message

Sujets en rapport avec ce message

Cross thread problème [ par WishhhMaster ] Bonjour,J'ai un petit problème lié au cross threading.  Dans mon application, l'utilisateur choisit divers fichiers images, dont les miniatures sont e Cross-threading [ par CMatt ] Bonjour, j'ai une application console qui utilise un thread pour écouter des données en provenance d'un socket réseau. Ce que je voudrais, c'est que Croos-thread s - utilisation des delegates pour modifier des paramettre des controls [ par megamario ] Bonsoir à tous. J'ai un petit souci avec mon programme quand à l'utilisation des threads et du passage de paramètres. J'ai trouvé un tuto qui expliq Cross-thread problème [ par winny68 ] Bonjour, j'ai un problème de compréhension pour réaliser un cross-thread via l'invoke. j'ai vu qu'il y a deux manières de faire un appel; Acti Cross-Threading -> Exception [ par sebseb42 ] salut a tousvoila mon probleme est simple, dans ma classe principal, je lance un thread, et dans ce thread j'essaye de modifier un controle.ca fonctio [C#] [thread] modifier niveau d'isolation [ par clairenes ] salut tout le monde! est ce que qqun connait la ligne de commande qui permet de modifier le niveau d'isolation d'une application lors du lancement d'u [Help]Le thread était en cours d'arrêt. [ par el_teedee ] Est-ce que qqln saurait me dire pourquoi j'ai cette exception ? Une exception non gérée du type 'System.Threading.ThreadStopException' s'est produite forms thread [ par fredspv ] Bonjour;Voila, je lance un processus depuis une fenetre, hors je ne peux plus intervenir sur cette fenetre une fois le thread démarré. Et me rappelle ProgressBar et Thread [ par poullos ] Bonjour,J'ai lu pas mal de choses sur les progressBar sur le forum mais rien n'a répondu à ma question.J'ai plusieurs opérations associées a des bases


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,385 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales