Nano Hash - криптовалюты, майнинг, программирование

Запуск команды cmd из моего кода С#

В настоящее время я размещаю OSRM локально на своем компьютере для создания приложения маршрутизации. Когда приложение запускается, bool ServiceAvailable проверяется с помощью тестового запроса, чтобы убедиться, что приложение доступно и работает локально. Я хочу иметь возможность запустить приложение OSRM, если этот bool вернет false. Я нашел ссылку StackOverflow с похожей проблемой и попытался реализовать ее, но приложение не загружается. Вот мой текущий код:

    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 из-за отсутствия сервиса.

04.08.2016

  • Второе присваивание process.StartInfo.Arguments перезаписывает первое, вы имели в виду += (с пробелом)? 04.08.2016
  • И вы не звоните process.Start(). Вы только настраиваете процесс, но никогда не запускаете его. 04.08.2016
  • похоже, вы пытаетесь запустить 2 команды за один раз, почему бы не изменить рабочий каталог на c:\users/james/desktop/osrm/osrm-backend/osrm_release, и тогда команда будет osrm-routed wales- last.osrm, а не параметр 04.08.2016
  • Я добавил process.Start() в конец своего метода и установил текущий рабочий каталог в каталог osrm_release, но команда все еще не выполняется. Я изменил osrm-routed... на explorer ., чтобы он открывал текущий каталог, и ничего не произошло. 04.08.2016

Ответы:


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

04.08.2016
  • Я думаю, что это /c мешало этому работать. Ваше решение сработало отлично, спасибо. 04.08.2016
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..