gpt4 book ai didi

c# - 从 C# 中的脚本/命令行调用获取信息

转载 作者:数据小太阳 更新时间:2023-10-29 08:41:50 25 4
gpt4 key购买 nike

我一直在编写几个使用 C# 作为 Gui 的应用程序,但在后台通过脚本(可能是 Python、Ruby 等)完成所有工作。

为了将信息从脚本传回 GUI(例如错误报告等),我通常会通过 Process 调用脚本,或者

  • 重定向输入(StartInfo.RedirectStandardOutput 等)并阅读
  • 创建了 GUI 监视/读取的临时文件,以找出它需要知道的内容

这两种方法似乎都不理想(在我看来,第二种方法简直糟透了),但我看不出有任何其他方法可以做到这一点。也许没有,但我认为在我启动另一个具有类似问题的应用程序之前值得一问。

谢谢

最佳答案

使用 ProcessStartInfo.RedirectStandardInputProcessStartInfo.RedirectStandardOutputProcessStartInfo.RedirectStandardError(以及 Process.ExitCode ) 非常好,尤其是当您的脚本严格遵循特定约定时:

  • 警告和错误描述转到 stderr
  • 如果错误以非零退出代码退出(避免使用特殊值 259 STILL_ACTIVE)
  • 错误提前退出的情况下,如果这样做有意义(避免让用户筛选千米级错误消息,或者您的 GUI 不得不在例如 MessageBox 中容纳千米级错误消息)
  • 所有其他常规输出到 stdout(如果适用)

然后您的 UI 可以轻松地:

  • 将脚本stdoutstderr 读入单独的缓冲区,直到脚本终止
  • 检查脚本退出代码:
    • 如果退出代码为 0 且 stderr 为空,则通知用户操作成功完成
    • 如果退出代码为 0 且 stderr 非空,则通知用户 Operation completed with warnings,允许用户有选择地检查来自 stderr 缓冲区
    • 如果退出代码不为 0,则通知用户操作因错误而失败,允许用户检查来自stderr 缓冲区的错误

关于c# - 从 C# 中的脚本/命令行调用获取信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2412141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com