从C#控制台应用程序调用时,R脚本从不停止

从C#控制台应用程序调用时,R脚本从不停止,c#,r,windows,rscript,C#,R,Windows,Rscript,我在用C#调用R脚本时遇到了一个奇怪的问题。 Console应用程序在我们的开发人员和prepod机器上可以完美地工作,但在生产服务器上却不能。 在生产中,R进程在几分钟后被阻塞,控制台在没有任何异常的情况下永远不会关闭 我看到的唯一区别是生产服务器功能更强大,具有更多的RAM和更多的内核(8个内核和16GB RAM,WindowsServer2008R2) 经过几次测试,我明白如果我强制R只使用两个内核,它就可以工作了!如果我直接从.bat用Rscript.exe调用同一个R脚本,它就可以工作

我在用C#调用R脚本时遇到了一个奇怪的问题。 Console应用程序在我们的开发人员和prepod机器上可以完美地工作,但在生产服务器上却不能。 在生产中,R进程在几分钟后被阻塞,控制台在没有任何异常的情况下永远不会关闭

我看到的唯一区别是生产服务器功能更强大,具有更多的RAM和更多的内核(8个内核和16GB RAM,WindowsServer2008R2)

经过几次测试,我明白如果我强制R只使用两个内核,它就可以工作了!如果我直接从.bat用Rscript.exe调用同一个R脚本,它就可以工作了!(但我想在我的业务规则中使用C中的8核和类…)

这是C代码。 当我们使用进程类调用.exe时,C#是否限制了最大内存?(R脚本使用大量内存) 或者其他想法

非常感谢你的帮助

    private Process ExecuteCommand()
    {
        string command = @"Rscript --vanilla --verbose launcher.r";

        ProcessStartInfo procStartInfo = new ProcessStartInfo("cmd", "/c " + command);

        procStartInfo.WorkingDirectory = "C:\Program Files\RRO\R-3.2.2\bin\x64";
        procStartInfo.RedirectStandardOutput = true;
        procStartInfo.UseShellExecute = false;
        procStartInfo.CreateNoWindow = false;
        procStartInfo.RedirectStandardInput = true;
        procStartInfo.RedirectStandardError = true;
        procStartInfo.StandardOutputEncoding = Encoding.UTF8;
        procStartInfo.StandardErrorEncoding = Encoding.Default;

        Process processus = new Process();
        processus.StartInfo = procStartInfo;
        processus.Start();

        return processus;
    }

如果在生产机器上单独运行R脚本,是否会出现相同的问题?如果我直接从cmd.exe或.bat运行R脚本(因此没有C#console应用程序),它工作正常:/n这是一个死锁:解决方案: