Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : interrompre l'exécution d'un thread [ Multimédia / WPF ] (mathmax)

vendredi 15 février 2008 à 18:54:32 | interrompre l'exécution d'un thread

mathmax

Bonjour,

Je travaille avec un contrôle WPF dont je souhaite modifier ses propriétés dans un autre thread. Je voudrais pouvoir interrompre l'exécution du thread depuis un thread extérieur, à n'importe quel moment, instantanément (l'équivalent de la méthode Thread.Abort()).

- La classe BackgroundWorker ne me conviens pas car l'appelle de la méthode CancelAsync() n'interrompt pas directement thread associé, mais lance simplement un appel pour dire que l'on veut l'arrêter. Il faut alors vérifier régulièrement dans la méthode appelée par BackgroundWorker.BeginInvoke() si un appel d'annulation a été lancé pour pouvoir réellement stopper l'exécution du thread.

- Une autre solution serait d'utiliser le Dispatcher de mon contrôle wpf. Mais celui-ci s'exécute dans le thread principal et interrompre le thread associé reviendrait à arrêter l'application toute entière...

Auriez-vous une autre solution à me proposer ?

Merci d'avance pour vos suggestions,


Mathmax

****************************************


vendredi 15 février 2008 à 21:51:57 | Re : interrompre l'exécution d'un thread

LUDINSKI

Salut Mathmax,

Je ne comprend pas ton problème... pourquoi ne pas utiliser l'objet System.Threading.Thread ??

Tu peux déclarer son instance comme static de manière à pouvoir appeler sa méthode Abord depuis n'importe où (même dans un  thread différent)

private Thread _cancelThread;

public Form1()
{
    _cancelThread = new Thread( new ThreadStart( ThreadTask ) );
    _cancelThread.Start();

    Thread.Sleep( 1000 );
    _cancelThread.Abort();
}

private void ThreadTask()
{
    try
    {
        Thread.Sleep( 5000 );

        // N'arrivera jamais ici !!
    }
    catch( ThreadAbortException )
    {
        return;
    }
}

samedi 16 février 2008 à 02:22:12 | Re : interrompre l'exécution d'un thread

mathmax

Je ne peux pas faire cela car je dois modifier les propriétés d'un composant WPF dans le thread qui doit être interrompu. On n'est pas autorisé à accedere aux propriétés d'un contrôle WPF depuis un thread qui n'est pas le thread principal. Il semble qu'il faille pour cela invoquer une méthode depuis la propriété Dispatcher du controle en question. Cette méthode s'éxécute alors dans le thread principal et l'on peut ainsi modifier les propriétés du contrôle. Le problème est qu'on ne peut alors pas interrompre le déroulement de cette méthode car elle s'exécute dans le thread principal. Je pensais qu'il était possible de travailler avec un BackgroundWorker et que celui permettait justement de modifier le control WPF depuis un autre thread. En fait ça n'est même pas le cas... Je cherche donc une autre solution à ce problème.


Mathmax

****************************************




Cette discussion est classé dans : contrôle, thread, méthode, exécution, interrompre


Répondre à ce message

Sujets en rapport avec ce message

Fin d'un thread en .NET [ par Frederyck ] Salut à toutes et à tous,alors voici mon soucis, dans une application que je réalise en C#, j'utilise dans un de mes objets (que j'appelerai ici objB) Exécution sous Thread spécifique [ par thegitch ] Bonjour à tous,Comment, depuis un thread B, exécuter une méthode sous un thread A ? Je m'explique.Le thread A est le thread principal, le main, le thr Ajout d'un contrôle depuis un thread en utilisant Invoke... [ par gazous ] Bonjour,Je vous contacte car j'ai vu que vous étiez assez calé en dll.Mon problème :J'ai un thread qui essaye d'ajouter un contrôle dans un panel char Problème de Thread [ par Bidou ] Bonjour,Bon je suis pas encore tout à fait au point avec les Threads. La question est certainement pas très compliquée.J'ai une forme qui contient un Thread & Exception [ par Bidou ] Bonjour,En fait j'ai une méthode qui démarre un nouveau thread (une méthode d'un autre object) et dans ce nouveau thread, il est possible qu'il se pro Thread [ par Equinox84 ] Bonjour : Est ce qu'il est possible de lancer une méthode via un thread différent que celui dans lequel on est ? Si oui comment ? --> mon problème: Thread [ par Bidou ] Bonjour,Petite question pour les spécialistes des Threads :j'utilise un object comme ceci:X x = new X();x.DoInThread();X est une classe qui possède do Thread Viewer [ par gama71 ] Bonjour, je voudrais savoir si quelquun connais un outils qui me permettrait de visualiser les threads qui torune en mémoire.J'ai une application qui Webservice utiliser la méthode asynchrone [ par virgul ] Bonjour,Voila je suis un peu embêter car quelquechose m'échappe dans l'appel de mon webservice en méthode asynchrone...En effet quand je lie mon Webse Redimensionner une image sur un contrôle [ par MasterShadows ] Bonsoir à tous et à toutes,Je voudrais redimensionner une image que j'applique sur un bouton, sachant que l'image n'est pas en backgroundParce que en


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,733 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.