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

C# Discussion :

Comment arrêter un Thread directement pendant qu'il est en Thread.Sleep de 30 secondes.


Sujet :

C#

  1. #21
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 898
    Points : 1 915
    Points
    1 915
    Par défaut
    Personnellement je suggèrerais un petit coup de refactoring en mettant dans des méthodes à part les différentes unités logiques de ton code. Une méthode qui s'appelle ThreadProc et qui fait plus de 200 lignes c'est totalement illisible et même en prenant un peut de temps pour le parcourir je suis totalement incapable de dire ce que ton code est censé faire. En plus ça te permettra probablement à toi aussi d'y voir plus clair et de le modifier plus facilement pour intégrer les suggestions des différents intervenants de ce fil.

    Par ailleurs concernant les Thread et les Task François Dorin a rédigé une série de 4 tutoriels sur le Pool de Thread que je te conseille de lire quand tu en auras l'occasion (le lien vers sa page d'articles est dans sa signature).

  2. #22
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 28
    Points : 17
    Points
    17
    Par défaut
    Bon je sais que tu vas me dire qu'une minute c'est une minute et une condition c'est une condition, mais là ce n'est pas clair (pour moi);
    quelle minute ? dans quelles conditions ? (j'ai du mal a comprendre)

    Je vois, je ferais ça, désolé mais vu que mon code est assez long (le tous) c'est normal que vous ne compreniez pas. (en gros ça alimente une progresser en fonction du temps saisi par un utilisateur et C# lit un fichier de log dans lequel un script powershell écrit dedans. Si ce fichier n'écrit plus et que la progresser n'est pas à 100%, cela provoque une erreur, en gros c'est ça le fonctionnement principal).

    Ça marche merci quand même François pour ton aide.

  3. #23
    Membre averti Avatar de _PascalC_
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 220
    Points : 428
    Points
    428
    Par défaut
    Une autre approche possible avec la classe AutoResetEvent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    private AutoResetEvent _wait = new AutoResetEvent(false);
     
    void ThreadProc()
    {
        while (!_wait.WaitOne(30000))
        {
            //... traitement toutes les 30s
        }
    }
     
    void Stop()
    {
        //Demande d'arrêt du thread
        _wait.Set();
    }
    La sortie est immédiate si le thread est en attente dans la méthode Waitone() au moment du Set()

  4. #24
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    if (a)....
    a est une condition
    C'est pareil pour le while, ça boucle tant que la condition est vraie
    Quand elle devient fausse ça sort
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. Comment arrêter un Thread proprement
    Par takinelinfo dans le forum C#
    Réponses: 9
    Dernier message: 08/01/2018, 08h42
  2. Comment arrêter mon Thread ?
    Par avenger22 dans le forum Général Java
    Réponses: 10
    Dernier message: 06/04/2014, 10h27
  3. Comment arréter un thread qui exécute une instruction bloquante
    Par nibor2luxe dans le forum Concurrence et multi-thread
    Réponses: 15
    Dernier message: 28/02/2008, 17h03
  4. [java.util.Timer]Comment arrêter l'exécution d'un Thread
    Par Invité dans le forum Concurrence et multi-thread
    Réponses: 1
    Dernier message: 07/06/2006, 07h54
  5. Réponses: 18
    Dernier message: 06/04/2005, 14h09

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