c# Как я могу запустить процесс несколько раз? - PullRequest
0 голосов
/ 31 января 2020

Мне нужен скрипт в c#, чтобы я мог попробовать несколько вариантов в консольной программе. Скрипт работает просто отлично в первом случае, но во втором случае он не позволит мне снова запустить процесс. это код:

try{ 

        string[] cases= Directory.GetFiles(CasesDir);
        string[] singleCase;
        foreach(string file in cases){

            p.Start();
            StreamWriter stdwriter= p.StandardInput;
            singleCase=File.ReadAllLines(file);

            foreach(string line in singleCase){
                stdwriter.WriteLine(line);
            }

            stdwriter.Close();
            p.WaitForExit();
            Console.WriteLine( p.StandardOutput.ReadToEnd() );
            p.CloseMainWindow();
            p.Close();

        }

    }catch(Exception e){
        Console.WriteLine("=X EXE "+e.Message);
    }

1 Ответ

0 голосов
/ 01 февраля 2020

Проблема заключалась в том, что я пытался запустить процесс после "p.Close ()". Так что процесс почему-то не начался заново. Окончательный код выглядит так:

string[] cases= Directory.GetFiles(CasesDir), solCases=Directory.GetFiles(Path.Combine(CasesDir,"sol"));
        string[] singleCase,singleSolCase;
        string salida;
        int i=0;

foreach(string file in cases){

            Console.WriteLine("\nCase "+(i+1).ToString());

            p.Start();
            singleCase=File.ReadAllLines(file);

            foreach(string line in singleCase){
                p.StandardInput.WriteLine(line);
            }

            singleCase=null;

            p.StandardInput.Close();
            p.WaitForExit();

            singleSolCase=File.ReadAllLines(solCases[i]);

            foreach(string line in singleSolCase){
                if(p.StandardOutput.EndOfStream){
                    Console.WriteLine("=X Output incomplete");
                    break;
                }
                testerOutput=p.StandardOutput.ReadLine();
                if(string.Compare(salida,line)!=0){
                    Console.WriteLine("=X Wrong Output\n"+"Solution: "+line+"\nOutput: "+salida);
                }
            }

            singleSolCase=null;
            i++;

        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...