Я пытаюсь вызвать приложение с простым кодом, какПроцесс выхода, но на самом деле не полная
public void Run(string command)
{
Process proc = new Process();
proc.StartInfo.FileName = "acvTemp.exe";
proc.StartInfo.Arguments = command;
proc.Start();
proc.WaitForExit();
}
Процесс имя_файла Я на самом деле запуска нерестится новое окно. Его запускают с некоторыми командами, которые не делают этого выхода. Т.е.
command = acvtest.exe /launch /wait /log:<temp.log>
Так acvtest.exe начинает работать на машине, и на самом деле все еще работает, так что я мог запускать другие команды, как
acvtest.exe /getid:<name>
Это, как я вручную использовать приложение.
acvtest.exe /launch /wait /log:<temp.log>
acvtest.exe /getid:<name>
Примечание фактическое возвращение/процесс запуска в оболочке командной строки, так как с/запустить новое окно командной строки открывается и выход/GetId фактически записывается в журнал.
Моя проблема в том, когда запускаются команды first/launch или/getid, waitforexit(), похоже, выходит даже до того, как дескриптор выпущен в журнале. (может быть, до того, как некоторые дети вышли из строя?)
I.e: Следующая команда не работает, пока я не посплю или не подожду между ними. даже с WaitForExit()
Run("/launch /wait /log:<temp.log>");
Run("/getid:<name>");
Run("shutdown");
//Needs some sleep or wait here
using (StreamReader reader = new StreamReader("temp.log"))
{
Console.WriteLine(reader.ReadToEnd());
}
без сна или подождать, пока между этими двумя секциями, доступ к лог с ошибкой, что он уже используется другим процессом. Похоже, что приложение выходит даже до того, как оно на самом деле завершает свои процессы. Это проблема с приложением? Все, что я могу сделать, чтобы обойти это?
Я подозреваю, что мне может понадобиться некоторый код Run() здесь, потому что запущена новая оболочка.
[обновление]
Проблема не только с файлом журнала. Когда я запускаю Run («/ getid:»), скажем, около 100 000 имен файлов, многие из них терпят неудачу с ошибкой «ресурсы недоступны», поэтому я думал, что приложение может выйти даже до выпуска своих ресурсов. Thanks для поиска.
Делайте это в цикле, ожидания между попытками. – Dialecticus
Я добавил обновление в конце вопроса. Благодарю. – user393148