我目前在我的机器上本地托管OSRM以构建路由应用程序。应用程序启动时,将使用测试查询检查bool ServiceAvailable
,以查看应用程序是否可用并在本地运行。如果bool
返回false,我希望能够启动OSRM应用程序。我找到了一个类似问题的StackOverflow link并试图实现它,但应用程序没有加载。这是我目前的代码:
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
请求错误而中断。
答案 0 :(得分: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);
}
的更多信息
此外,根据您的原始StartInfo.Arguments," /C
"告诉控制台在命令执行后终止,因此,如果" osrm-routed
"是需要在控制台中运行的服务,并且控制台终止,然后应用程序本身也将在控制台终止时终止。