想通过本地node程序运行js代码,但是阻塞了?

发布于 2022-09-04 11:34:41 字数 936 浏览 19 评论 0

这是我的代码

private void RunNode(string code)
{
            Process scriptProc = new Process();
            ProcessStartInfo info = new ProcessStartInfo();
            info.FileName = "node.exe";
            info.RedirectStandardError = true;
            info.RedirectStandardInput = true;
            info.RedirectStandardOutput = true;
            info.UseShellExecute = false;
            info.CreateNoWindow = false;
            scriptProc.StartInfo = info;
            scriptProc.Start();
            scriptProc.StandardInput.WriteLine(code + "&.exit");
            string outStr = scriptProc.StandardOutput.ReadToEnd();
            scriptProc.Close();
}

我的程序界面

clipboard.png
调试发现执行到
string outStr = scriptProc.StandardOutput.ReadToEnd();这里阻塞了
看来是没退出。。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

嗫嚅 2022-09-11 11:34:41

自己解决了哦,要关闭流

 private void RunNode(string code)
        {
            Process scriptProc = new Process();
            ProcessStartInfo info = new ProcessStartInfo();
            info.FileName = "node.exe";
            info.RedirectStandardError = true;
            info.RedirectStandardInput = true;
            info.RedirectStandardOutput = true;
            info.UseShellExecute = false;
            info.CreateNoWindow = false;
            scriptProc.StartInfo = info;
            scriptProc.Start();
            StreamWriter writer = scriptProc.StandardInput;
            writer.WriteLine(code);
            writer.Close();
            string outStr = scriptProc.StandardOutput.ReadToEnd();
            scriptProc.Close();
            
        }
沧桑㈠ 2022-09-11 11:34:41

如果只是执行简单的js函数的话,可以考虑使用jint.net,新版本开始兼容es6了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文