Le programme que j'ai créé supprime les threads qui démarrent les exécutables via les processus. Chaque thread exécute la méthode ci-dessous qui démarre le processus et redirige la sortie des processus dans une chaîne (info.additional qui est par processus).
J'ai appris par beaucoup d'essais et d'erreurs que je dois rediriger la sortie d'une certaine façon (en utilisant des événements pour la sortie reçue) ou bien l'impasse des flux.
Maintenant, je cours sur une machine dual core et si j'ai deux threads en cours d'exécution et de démarrage des processus, le programme fonctionne très bien et capture parfaitement la sortie de ces processus. Mais quand je passe à plus de deux threads (plus de threads que j'ai de cœurs) la sortie n'est parfois pas capturée pour ceux-ci. Pourquoi est-ce? Et quelqu'un sait-il comment résoudre ce problème?
Merci, JoeC#, la sortie des processus n'est parfois pas capturée (incohérence)?
public void ThreadProc()
{
info.watch.Start();
proc = InstantiateProcess();
proc.Start();
proc.BeginOutputReadLine();
}
private void procOutputDataReceived(object sendingProcess, DataReceivedEventArgs e)
{
if (e.Data != null)
{
//Console.WriteLine(System.Threading.Thread.CurrentThread.ManagedThreadId);
this.info.additional += e.Data.ToString();
}
}
On ne sait pas si info.additional est par processus. Si ce n'est pas le cas, vous devez le verrouiller. –
Désolé à ce sujet, il crée une nouvelle instance pour chaque thread désolé. –