Erreur "StandardIn n'a pas été redirigée" dans .NET (C #)
Je veux faire une application simple à l'aide de stdin. Je veux créer une liste dans un programme et de l'imprimer dans un autre. Je suis venu avec la ci-dessous.
Je n'ai aucune idée si app2 fonctionne cependant en app1-je obtenir de l'exception "StandardIn n'a pas été redirigé." sur writeline (à l'intérieur de l'instruction foreach). Comment dois-je faire ce que je veux?
NOTE: j'ai essayé de réglage UseShellExecute à la fois vrai et faux. À la fois la cause de cette exception.
//app1
{
var p = new Process();
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.FileName = @"path\bin\Debug\print_out_test.exe";
foreach(var v in lsStatic){
p.StandardInput.WriteLine(v);
}
p.StandardInput.Close();
}
//app 2
static void Main(string[] args)
{
var r = new StreamReader(Console.OpenStandardInput());
var sz = r.ReadToEnd();
Console.WriteLine(sz);
}
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Vous ne jamais Démarrer() dans le nouveau processus.
Vous devez vous assurer ShellExecute est définie sur false pour que la redirection fonctionne correctement.
Vous devriez aussi ouvrir un streamwriter sur, démarrer le processus, attendez que le processus de sortie, et de fermer le processus.
Essayez de remplacer ces lignes:
avec ces:
si vous souhaitez voir un exemple simple de comment écrire votre processus à un Flux d'utiliser ce code ci-dessous comme Modèle se sentir libre de le modifier pour l'adapter à vos besoins..
//Modification pour ajouter votre travail avec votre boucle de
De http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.redirectstandardinput.aspx
On pourrait s'attendre à false par défaut, qui ne semble pas être le cas.