Выполнение команды cmd из моего кода C#
В настоящее время я размещаю OSRM локально на моей машине для создания приложения маршрутизации. Когда приложение запускается, bool ServiceAvailable
проверяется с помощью тестового запроса, чтобы увидеть, доступно ли приложение и работает ли оно локально. Я хочу иметь возможность запустить приложение OSRM, если это bool
вернуть ложь. Я нашел ссылку Stackru с похожей проблемой и попытался ее реализовать, но приложение не загружается. Вот мой текущий код:
private void StartOSRMService()
{
Process process = new Process();
process.StartInfo.WorkingDirectory = @"C:\";
process.StartInfo.UseShellExecute = false;
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.Arguments = "/c cd users/james/desktop/osrm/osrm-backend/osrm_release";
process.StartInfo.Arguments = "/c osrm-routed wales-latest.osrm";
}
Метод запущен, но служба никогда не запускается. В других методах мой код ломается из-за Http.Web
ошибка запроса, из-за отсутствия сервиса.
1 ответ
Вы можете попробовать следующее:
private void StartOSRMService()
{
var startInfo = new ProcessStartInfo(@"C:\users\james\desktop\osrm\osrm-backend\osrm_release\osrm-routed.exe");
startInfo.WorkingDirectory = @"C:\users\james\desktop\osrm\osrm-backend\osrm_release";
startInfo.UseShellExecute = false;
startInfo.Arguments = "wales-latest.osrm";
Process.Start(startInfo);
}
Дополнительная информация о Process.Start()
Кроме того, на основе ваших оригинальных StartInfo.Arguments, "/C
"сообщает консоли прекратить работу после выполнения команды, поэтому, если"osrm-routed
"это служба, которая должна быть запущена в консоли, и консоль завершается, тогда само приложение также будет завершено при завершении консоли.