gpt4 book ai didi

c# - 在单独的线程上执行进程会导致 System.IO.__Error.WinIOError

转载 作者:太空宇宙 更新时间:2023-11-03 11:54:02 24 4
gpt4 key购买 nike

我正在编写一个基本的 GUI 应用程序,它本质上是在给定一些参数的情况下调用其他进程,而这些应用程序的输出会通过一个富文本框实时显示给用户。所以基本上我有一个单独的进程线程运行子进程。

除了 xdiscbld.exe(一个 Xbox ISO 镜像创建工具)之外,大多数进程在该线程上都运行良好,它崩溃时说:

Unhandled Exception: System.IO.IOException: The handle is invalid.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.Console.GetBufferInfo(Boolean throwOnNoConsole, Boolean& succeeded)
at System.Console.get_BufferWidth()
at XDiscBld.XDiscBldProgram.ProcessDisc()
at XDiscBld.XDiscBldProgram.Run(String[] args)
at XDiscBld.XDiscBldProgram.Main(String[] args)

(顺便说一句,xDiscBld 通过命令提示符或单线程进程调用运行良好)

我通常不会发布这样一个特定的错误,但我真的很困惑,我认为它可能是与线程的常见问题有关并持有某种 IO 句柄的通用错误。如果有人遇到过类似问题或对此有任何见解,我们将不胜感激。

最佳答案

我相信实际问题与线程无关,而是 XDiscBld 想要写入不存在的控制台窗口。这是因为我是这样开始这个过程的。

process = new Process();
process.StartInfo.UseShellExecute = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.CreateNoWindow = false;
process.StartInfo.FileName = FileName;
process.StartInfo.Arguments = Arguments;
process.StartInfo.WorkingDirectory = WorkingDirectory;
process.Start();

如果我只用

process.StartInfo.FileName = FileName;
process.StartInfo.Arguments = Arguments;
process.StartInfo.WorkingDirectory = WorkingDirectory;
process.Start();

它有效。所以我不喜欢我重定向输出的方式。话虽如此,我仍然不知道如何使它与当前的系统一起工作。因为这个话题已经严重出轨了,所以我想我应该删除它并重新开始,或者留下它供其他人引用。

关于c# - 在单独的线程上执行进程会导致 System.IO.__Error.WinIOError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1224833/

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