Я запускаю процесс асинхронно с помощью Process.Start(). Затем я жду, чтобы он завершил использование Process.WaitForExit(). Там все хорошо. Но я хочу, чтобы завершенный процесс отправил обратно пользовательский объект для завершения вызова. Есть ли способ сделать это?Сбор результатов асинхронно инициированного процесса
ответ
№ Нет «объект» может принадлежать процессу зомби.
Если вы хотите IPC (Inter Process Communication), вы должны сделать это, пока процесс жив. У вас есть много вариантов для технологии (общая память, именованные каналы, COM, RPC, LRPC, HTTP, WCF и т. Д. И т. Д. И т. Д.), Но (почти) все требуют, чтобы процесс был живым.
Возможно, вы захотите рассмотреть файл . Затем дочерний процесс записывает в файл, а затем завершает работу родительский процесс. Это довольно стандартно.
Единственное исключение IPC - это сообщение в очереди. Для этого вам необходимо использовать некоторую технологию очередей. Читайте о Message Queuing (MSMQ).
Я смог сделать это, используя приведенный ниже код. Стандартный вывод newProcess будет записан в вызывающем абоненте после завершения работы newProcess.
newProcess.StartInfo.FileName = "Auto_Process2.exe";
newProcess.StartInfo.RedirectStandardOutput = true;
newProcess.StartInfo.UseShellExecute = false;
if (newProcess.Start())
{
while (!newProcess.StandardOutput.EndOfStream)
{
newProcessOutput = newProcess.StandardOutput.ReadLine();
}
}
- 1. сбор результатов асинхронно от gpars parallel executor
- 2. macvim + Latex + сбор результатов?
- 3. Сбор информации из Интернета асинхронно
- 4. Запуск продолжительного процесса асинхронно
- 5. Fork/Join: Сбор результатов
- 6. Оценка и сбор результатов условий
- 7. Получить использование памяти и время выполнения из процесса, инициированного ProcessBuilder
- 8. Обработка порожденных результатов процесса
- 9. Асинхронно ждать завершения процесса в elisp?
- 10. C# Чтение stdout дочернего процесса асинхронно
- 11. Асинхронно общайтесь с stdin/stdout дочернего процесса
- 12. Получение результатов выполнения SQL-запроса асинхронно.
- 13. Сбор результатов поиска по многомодельному запросу
- 14. jQuery AJAX: сбор нескольких асинхронных результатов
- 15. сбор нескольких результатов обещаний? (простой javascript)
- 16. Сбор результатов ASync как они становятся доступными
- 17. Сбор неизвестного числа результатов в цикле
- 18. Сбор результатов цикла из каждого цикла цикла
- 19. Сбор результатов от метода дозирования вызывает
- 20. SAS Выполнение нескольких регрессий и сбор результатов
- 21. инициированного пользователя осуществление действий
- 22. Сбор двух отдельных результатов столбцов из запроса mySQL
- 23. AngularJS: Сбор дополнительных данных асинхронно между моделью и видом
- 24. Сбор данных из Firebase асинхронно: когда набор данных завершен?
- 25. Перезапуск результатов процесса не читается
- 26. process.WaitForExit() асинхронно
- 27. Отправка электронной почты асинхронно внутри рабочего процесса SharePoint
- 28. asp.net - Как обновить текстовое поле асинхронно во время длительного процесса
- 29. Как читать для завершения процесса вывода асинхронно в C#?
- 30. Subprocess вызов остановки асинхронно-казнены Python родительского процесса
Thanks Remus. То, что вы говорите, имеет смысл. В таком случае, может ли он работать таким образом? Новый процесс отправляет объект обратно вызывающему, а затем завершается. Но вызывающему нужно ДОЛЖНО БЫТЬ, ЧТО ЭТО ПОЛУЧАЕТ ВЫХОД. Я прошел через Process.OutputDataReceived Event. Будет ли вызывающий абонент ждать, будет ли этот обработчик использоваться? Или есть другой способ? – Ganesh
Это зависит от того, что вы подразумеваете под «процессом отправляет объект» –
Объект будет содержать некоторый статус и информацию об обработке. Количество обработанных строк, время окончания и т. Д. Вызывающий должен знать эту информацию. – Ganesh