Process.WaitForExit() 触发速度太快

2023-12-02

以下是我用来从 C# 代码运行 extern 可执行文件(非托管)的代码:

static void Solve()
            {
                Process newProc = new Process();
                newProc.StartInfo.WorkingDirectory =  Path.Combine(Directory.GetCurrentDirectory(), "Data");
                newProc.StartInfo.FileName = "solver.exe";
                newProc.StartInfo.CreateNoWindow = true;
                newProc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
                try
            {
                newProc.Start();
                newProc.WaitForExit();

            }
            catch (Exception e)
            {
            StreamWriter errorReporter = new StreamWriter("ErrorLog.txt", true);
    errorReporter.WriteLine(message);
    errorReporter.Close();

            }
            newProc.Close();
        }

在我的例子中,如果我手动启动求解器,它会运行大约 30 秒。 solver.exe 操作的结果是一个文件。但是当我从代码中调用它时,它几乎同时退出并且什么也不做。它没有输出,也不会生成输出文件。

此外,进程已正确启动,不会引发任何错误。上面的代码是否有任何问题,或者我应该从检查solver.exe开始?


您的流程可能会以不可预见的方式失败。您只能知道读取输出和错误流并将其存储在文件中(或将其写入控制台或事件日志)

请记住,如果您需要同时读取错误和输出流以异步/事件驱动。否则,流将阻塞并且不会产生任何输出,或者不会产生您想要的输出。

StreamWriter errorReporter = new StreamWriter("SOLVER-OUTPUT-ERROR.txt", true);

newproc.StartInfo.RedirectStandardOutput = true;
newproc.StartInfo.RedirectStandardError = true;

newproc.OutputDataReceived += (sender, args) => errorReporter.WriteLine(args.Data);
newproc.ErrorDataReceived += (sender, args) => errorReporter.WriteLine(args.Data);
newproc.StartInfo.UseShellExecute=false;

newProc.Start();
newProc.BeginOutputReadLine();
newProc.BeginErrorReadLine();

newProc.WaitForExit();

errorReporter.Close();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Process.WaitForExit() 触发速度太快 的相关文章

  • Unix网络编程澄清

    我正在翻阅这本经典书籍Unix网络编程 https rads stackoverflow com amzn click com 0139498761 当我偶然发现这个程序时 第 6 8 节 第 179 180 页 include unp h
  • 如何检查QProcess是否正确执行?

    QProcess process sdcompare QString command sdcompare QStringList args sdcompare command sdcompare diff args sdcompare lt
  • 向 Nhibernate 发出 SQL 查询

    如何将此 SQL 查询发送给 Nhibernate SELECT Customer name FROM Company INNER JOIN Customer ON Company CompanyId Customer CompanyId
  • XamlReader.Load 在后台线程中。是否可以?

    WPF 应用程序具有从单独的文件加载用户控件的操作 使用XamlReader Load method StreamReader mysr new StreamReader pathToFile DependencyObject rootOb
  • 单元测试一起运行时失败,单独运行时通过

    所以我的单元测试遇到了一些问题 我不能只是将它们复制并粘贴到这里 但我会尽力而为 问题似乎是 如果我一项一项地运行测试 一切都会按预期进行 但如果我告诉它一起运行测试 则 1 5 将通过 TestMethod public void Obj
  • 用于检查项目文件中的项目变量和引用路径的 api

    我正在研究一个 net application VS2010 与 x 没有 解和变量号这些解决方案中的项目数量 我需要检查项目属性 特定于一定数量的项目 是否同质 并且检查 验证构建期间的参考路径 有没有一个API是这样的吗 如果没有 我该
  • C# Dns.GetHostEntry 不返回连接到 WiFi 的移动设备的名称

    我有一个 C 中的 Windows 窗体应用程序 我试图获取列表中所有客户端的主机名 下面给出的是 ra00l 来自此链接的代码示例 GetHostEntry 非常慢 https stackoverflow com questions 99
  • ASP.NET:获取自 1970 年 1 月 1 日以来的毫秒数

    我有一个 ASP NET VB NET 日期 我试图获取自 1970 年 1 月 1 日以来的毫秒数 我尝试在 MSDN 中寻找方法 但找不到任何东西 有谁知道如何做到这一点 从 NET 4 6 开始 该方法ToUnixTimeMillis
  • 关于在 Windows 上使用 WiFi Direct Api?

    我目前正在开发一个应用程序 我需要在其中创建链接 阅读 无线网络连接 在桌面应用程序 在 Windows 10 上 和平板电脑 Android 但无关紧要 之间 工作流程 按钮 gt 如果需要提升权限 gt 创建类似托管网络的 WiFi 网
  • 如何在 Linq 中获得左外连接?

    我的数据库中有两个表 如下所示 顾客 C ID city 1 Dhaka 2 New york 3 London 个人信息 P ID C ID Field value 1 1 First Name Nasir 2 1 Last Name U
  • Rx 中是否有与 Task.ContinueWith 运算符等效的操作?

    Rx 中是否有与 Task ContinueWith 运算符等效的操作 我正在将 Rx 与 Silverlight 一起使用 我正在使用 FromAsyncPattern 方法进行两个 Web 服务调用 并且我想这样做同步地 var o1
  • C++:.bmp 到文件中的字节数组

    是的 我已经解决了与此相关的其他问题 但我发现它们没有太大帮助 他们提供了一些帮助 但我仍然有点困惑 所以这是我需要做的 我们有一个 132x65 的屏幕 我有一个 132x65 的 bmp 我想遍历 bmp 并将其分成小的 1x8 列以获
  • 上下文敏感与歧义

    我对上下文敏感性和歧义如何相互影响感到困惑 我认为正确的是 歧义 歧义语法会导致使用左推导或右推导构建多个解析树 所有可能的语法都是二义性的语言是二义性语言 例如 C 是一种不明确的语言 因为 x y 总是可以表示两个不同的事物 如下所述
  • (de)从 CSV 序列化为对象(或者最好是类型对象的列表)

    我是一名 C 程序员 试图学习 C 似乎有一些内置的对象序列化 但我在这里有点不知所措 我被要求将测试数据从 CSV 文件加载到对象集合中 CSV 比 xml 更受青睐 因为它更简单且更易于人类阅读 我们正在创建测试数据来运行单元测试 该集
  • gcc 的配置选项如何确定默认枚举大小(短或非短)?

    我尝试了一些 gcc 编译器来查看默认枚举大小是否很短 至少一个字节 强制使用 fshort enums 或无短 至少 4 个字节 强制使用 fno short enums user host echo Static assert 4 si
  • 为什么在setsid()之前fork()

    Why fork before setsid 守护进程 基本上 如果我想将一个进程与其控制终端分离并使其成为进程组领导者 我使用setsid 之前没有分叉就这样做是行不通的 Why 首先 setsid 将使您的进程成为进程组的领导者 但它也
  • 线程和 fork()。我该如何处理呢? [复制]

    这个问题在这里已经有答案了 可能的重复 多线程程序中的fork https stackoverflow com questions 1235516 fork in multi threaded program 如果我有一个使用 fork 的
  • memset 未填充数组

    u32 iterations 5 u32 ecx u32 malloc sizeof u32 iterations memset ecx 0xBAADF00D sizeof u32 iterations printf 8X n ecx 0
  • 检查Windows控制台中是否按下了键[重复]

    这个问题在这里已经有答案了 可能的重复 C 控制台键盘事件 https stackoverflow com questions 2067893 c console keyboard events 我希望 Windows 控制台程序在按下某个
  • 在客户端系统中安装后桌面应用程序无法打开

    我目前正在使用 Visual Studio 2017 和 4 6 1 net 框架 我为桌面应用程序创建了安装文件 安装程序在我的系统中完美安装并运行 问题是安装程序在其他计算机上成功安装 但应用程序无法打开 edit 在客户端系统中下载了

随机推荐

  • Python GraphQL API 调用组合

    我最近开始学习如何使用 python 但在 graphQL api 调用方面遇到了一些问题 我正在尝试设置一个循环来使用分页获取所有信息 并且我的第一个请求工作得很好 values query organizations ids pipes
  • 使用 Motorola Moto G(或 Moto X)录制立体声音频

    我希望有人能帮助我解决这个问题 不久前 我开发了一个应用程序 以便同时录制智能手机中前置麦克风和后置麦克风捕获的声音 基本上 我像这样制作下一个对象 音频记录 音频记录 新音频记录 MediaRecorder AudioSource CAM
  • RawPy 对象中的颜色矩阵是什么?

    我正在读取尺寸为 3120 x 4208 的 DNG 图像RawPy dng rawpy imread TestImages IMG 20200108 161323 dng 调试的时候看到dng有一个名为color matrix 形状为 3
  • swift - if 语句和数组

    我想将 DicX 中的字符串与现有标题 根据单元格选择而变化的表格标题 进行匹配 var DicX xx yy zz qq let DicYY 11 22 33 44 1 2 3 4 m n k b bb kk mm nn 我正在比较的标题
  • 从可能未格式化为表格的网页中提取数据

    首先 我绝不是 VBA 专家 只要知道得足够多就会很危险 8 我首先搜索了如何从网页中提取表格 发现很多人都问了同样的问题 不幸的是 我读到的大部分内容都超出了我的理解范围 我读过的一篇文章向我指出了这一点详细文章作者 Siddharth
  • asp.net MVC 有应用程序变量吗?

    我正忙于将 Web 应用程序转换为 MVC 并将一些信息保存到跨多个租户 帐户使用的应用程序变量中 以提高效率 我意识到 MVC 的要点是尽可能保持无状态 会话状态显然在 MVC 中具有并存在是有意义的 但我们不想只将应用程序转换为会话变量
  • 如何使用支持 __LINE__ 和 __FILE__ 的内联函数替换 C++ 异常宏?

    我目前正在阅读 Scott Meyers 的 Effective C 一书 它说我应该更喜欢inline功能超过 define对于类似函数的宏 现在我尝试编写一个内联函数来替换我的异常宏 我的旧宏看起来像这样 define EXCEPTIO
  • 所有边的edge_index都为零?

    定义我的boost graph如下所示 我得到所有边的边索引为零 为什么 我究竟做错了什么 include
  • 在表单完成之前不要更改 QTabWidget 的 TAB

    我试图让用户在填写表格 1 之前不要切换到 表格 2 所在的下一个选项卡 我尝试了 currentChange 事件 但它没有按照我想要的方式工作 因为它在已经从 TAB 更改时显示警报 有没有办法让当前的 TAB 保持固定 直到任务完成
  • 接受应用程序时选择“现在不”会导致“com.facebook.sdk error2”

    使用 Facebook iOS SDK 3 1 当选择不允许 连接 到 Facebook 应用程序时 我陷入了 Facebook 抛出 com facebook sdk error2 的困境 即使重新安装我的应用程序后 我也会遇到错误 重现
  • Java.io.IOException:无效状态代码 = 403 文本 = 禁止

    当我尝试在远程服务器的 Azure DevOps 驱动程序中执行一组 Selenium Webdriver 测试时 出现此错误堆栈 2023 03 08T21 06 46 9827484Z Running Test 66728 Mobile
  • 根据图的边对应的分数

    import numpy as np score np array 0 9 0 7 0 2 0 6 0 4 0 7 0 9 0 6 0 8 0 3 0 2 0 6 0 9 0 4 0 7 0 6 0 8 0 4 0 9 0 3 0 4 0
  • 如何使用 PaintEventArgs 参数调用函数?

    给出来自 MSDN 的以下代码示例 private void GetPixel Example PaintEventArgs e Create a Bitmap object from an image file Bitmap myBitm
  • 如何动态获取EC 2的私有IP并将其放入/etc/hosts

    我想使用 Terraform 创建多个 EC2 实例并将实例的私有 IP 地址写入 etc hosts在每个实例上 目前我正在尝试以下代码 但它不起作用 resource aws instance ceph cluster count va
  • 授予 PHP 访问 COM 端口的权限

    我正在创建一个 php 脚本 该脚本连接到通过 COM5 上的串行连接连接的 3G 调制解调器 我收到以下错误 我相信这是因为 php 没有对 COM5 的读 写访问权限 警告 fopen COM5 function fopen 无法打开流
  • 通过 PowerShell 填写 Web 表单无法识别输入的值

    作为 QA 我需要通过网络表单填写很多申请 想法是将个人数据保存在某些 xls txt 任何文件中 读取该文件并使用 Powershell 将数据提供给浏览器 当我使用下面的代码在 IE 中填写表单时 尽管看起来工作正常 但在提交表单时出现
  • Javascript正则表达式解析路径字符串

    我有一个向用户显示照片和相册的应用程序 根据应用程序的当前状态 我显示了适当的视图 每次视图更改时 我都会更改 url 然后控制器使用 window location hash 获取 url 值 它返回以下形式的字符串 photos bya
  • 将矩阵元素映射到字符串

    我想将矩阵的数字输出映射到字符串 Given compute 7 4 3 3 4 7 如何获得字符串映射为 Out Run Walk Jog Jog Walk Run 实际输出可能是字符串元胞数组 gt gt map a b Jog Wal
  • 从 SQL 2008 中的外键关系生成删除语句?

    是否可以通过脚本 工具根据表 fk 关系生成删除语句 即 我有表 DelMe ID 并且有 30 个表 其中有对其 ID 的 FK 引用 我需要首先删除这些表 是否有一些我可以运行的工具 脚本 它将根据 FK 关系生成 30 个删除语句为我
  • Process.WaitForExit() 触发速度太快

    以下是我用来从 C 代码运行 extern 可执行文件 非托管 的代码 static void Solve Process newProc new Process newProc StartInfo WorkingDirectory Pat