begin process at 2010 02 09 23:06:40
  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 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 TreeView : selection d'un noeud avec le click droit [ par rocknbananas ] Bonjour a tous ! Je suis nouveau sur le C#, je travaille avec depuis un mois environ. J'ai un probleme de GUI avec un objet Treeview. Ce que j'ai bes OpenNETCF BestPracticeViolationException -> thread.Abort() [ par el_teedee ] Salut, j'effectue un thread.abort() qui comme prévu me génère une exception de type : OpenNETCF.BestPracticeViolationException J'ai donc rajouté un


Nos sponsors


Sondage...

Comparez les prix


HTC Magic

Entre 429€ et 429€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

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 : 0,390 sec (4)

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