/// <summary> /// Execution des différentes tâches /// </summary> public void Demarrer(double tempsImparti) { Timer timeout; DateTime fin = new DateTime(); var thDecompte = new Thread(() => { while (GestionStrat.ExecutionPossible && DateTime.Now < fin) { //Trac.Ecrire("Temps restant: " + (fin - DateTime.Now).ToString().Substring(3, 5) + "."); Thread.Sleep(10000); } }); var thStrat = new Thread(() => EffectuerStrategie()); InstantDebut = DateTime.Now; fin = InstantDebut.AddSeconds(tempsImparti); thDecompte.Start(); thStrat.Start(); timeout = new Timer(state => { //m_ihm.Ecrire("Fin du temps imparti."); if (thStrat.IsAlive) { thStrat.Abort(); } m_baseRoulante.stop(); petitBras.arretUrgenceRoulette(); }, null, (int)(tempsImparti * 1000), -1); }
/// <param name="tempsImparti">Temps en secondes au bout du quel l'arrêt du robot est forcé</param> public void Demarrer(double tempsImparti) { Timer timeout; DateTime fin = new DateTime(); /* * var thDecompte = new Thread(() => * { * while (Strategie.ExecutionPossible() && DateTime.Now < fin) * { * // Tracage.Ecrire("Temps restant: " + (fin - DateTime.Now).ToString().Substring(3, 5) + "."); * Thread.Sleep(10000); * } * }); */ InitialiserStrategie(); Thread thStrat = new Thread(() => EffectuerStrategie()); InstantDebut = DateTime.Now; fin = InstantDebut.AddSeconds(tempsImparti); // thDecompte.Start(); thStrat.Start(); // if (thStrat.IsAlive) m_ihm.retourPhase(Couleurs.bleu); timeout = new Timer(state => { m_ihm.retourPhase(Couleurs.orange); // Tracage.Ecrire("Fin du temps imparti."); /*if (thRanger.IsAlive) * { * Debug.Print("plop ran"); * thRanger.Suspend(); * } * * if (thReservoir.IsAlive) * { * Debug.Print("plop res 1"); * thReservoir.Suspend(); * } * */ // reservoir.arretUrgenceRoulette(); /* * Thread thFunny = new Thread(() => * { * Thread.Sleep(3000); * funnyBras.lancer(); * }); * * thFunny.Start(); */ funnyBras = new CFunnyBras(controleurAX12, 7); Thread.Sleep(2000); funnyBras.lancer(); m_ihm.retourPhase(Couleurs.rouge); BaseRoulante.stop(); m_ihm.retourPhase(Couleurs.vert); pince.killPince(); bras.killBras(); reservoir.killReservoir(); if (thStrat.IsAlive) { Debug.Print("kill main thread"); thStrat.Abort(); } m_ihm.retourPhase(Couleurs.bleu); //reservoir.m_rouletteIntelligente.m_ax12Roulette.setMode(AX12Mode.joint); //reservoir.m_rouletteIntelligente.m_ax12Roulette. /* var thBase = new Thread(() => * { * }); * thBase.Start(); * var thReservoir = new Thread(() => * { * }); * thReservoir.Start(); */ }, null, (int)(tempsImparti * 1000), -1); }