Выполнение команды 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"это служба, которая должна быть запущена в консоли, и консоль завершается, тогда само приложение также будет завершено при завершении консоли.

Другие вопросы по тегам