如何在新进程中调用错误.dll
本文关键字:调用 错误 dll 进程 新进程 | 更新日期: 2023-09-27 18:37:01
我有一个 c# Windows 服务应用程序在使用第三方.dll处理某些文件时崩溃而没有引发异常。 我决定做的是创建一个新的控制台应用程序,该应用程序复制了Windows服务代码的一小部分,特别是导致服务崩溃的部分。 我想做的是从 Windows 服务调用新的.exe程序,如果它崩溃,我自己会抛出异常。
因此,我需要调用此.exe程序(不在后台,因为我无法允许Windows服务继续,直到我知道要处理的文件是安全的),然后确定它是否成功退出。 我该怎么做? 我看到的示例在后台进程中运行.exe,这不是我想要的。
谢谢。
看看这个SO答案如何从Windows服务运行控制台应用程序。只需添加 WaitForExit,如下所示:
ProcessStartInfo info = new ProcessStartInfo(@"c:'myprogram.exe");
info.UseShellExecute = false;
info.RedirectStandardError = true;
info.RedirectStandardInput = true;
info.RedirectStandardOutput = true;
info.CreateNoWindow = true;
info.ErrorDialog = false;
info.WindowStyle = ProcessWindowStyle.Hidden;
Process process = Process.Start(info);
process.WaitForExit();
在控制台应用程序中,如果以 Environment.Exit(statusCode)
退出或从控制台应用程序的 main 函数返回 int 值,则可以设置退出代码。或者,您可以写入输出,然后在服务中检查退出代码(process.ExitCode
)或输出流,以便确定进程是否成功退出。