Bonjour,

J'ai besoin de développer en C# un executable qui me permette de lancer une commande (un executable avec ses paramètres) et de superviser son execution.
J'ai besoin de faire ça car la commande en question peut parfois se bloquer et ne pas se terminer. Je voudrais donc pouvoir l'arrêter si le traitement est trop long ou si un fichier de sortie généré par cette commande contient un message spécifique ("FIN DE TRAITEMENT" par exemple).

Je ne sais pas trop comment faire ça. Mon idée serait de lancer ma commande via un Process :

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
17
 
    Process newProcess = new Process();
 
    // Lancement du processus
    newProcess = Process.Start(processStartInfo);
 
    // Attente synchrone de la fin du traitement (maximum 10 minute)
    bool completed = newProcess.WaitForExit(600000);
 
    if(!completed)
    {
        // Temps d'attente dépassé : on tue le processus
        if (!newProcess.HasExited)
            newProcess.Kill();
 
        throw new Exception("Process not completed");
    }
Et parallèlement lancer un Thread qui vérifierait périodiquement le contenu du fichier de sortie produit par ma commande.

Est ce que l'approche vous semble bonne ?

Merci d'avance