C# 如何在新进程中调用buggy.dll?

C# 如何在新进程中调用buggy.dll?,c#,dll,service,process,background,C#,Dll,Service,Process,Background,我有一个c#windows服务应用程序,当使用第三方.dll处理某些文件时,它会崩溃,但不会引发异常。我决定创建一个新的控制台应用程序,它复制一小部分windows服务代码,特别是导致服务崩溃的部分。我想做的是从windows服务调用新的.exe程序,如果它崩溃,我自己抛出一个异常 因此,我需要调用这个.exe程序(不是在后台,因为在我知道要处理的文件是安全的之前,我不能允许windows服务继续),然后确定它是否成功退出。我该怎么做呢?我看到的示例在后台进程中运行.exe,这不是我想要的 谢谢

我有一个c#windows服务应用程序,当使用第三方.dll处理某些文件时,它会崩溃,但不会引发异常。我决定创建一个新的控制台应用程序,它复制一小部分windows服务代码,特别是导致服务崩溃的部分。我想做的是从windows服务调用新的.exe程序,如果它崩溃,我自己抛出一个异常

因此,我需要调用这个.exe程序(不是在后台,因为在我知道要处理的文件是安全的之前,我不能允许windows服务继续),然后确定它是否成功退出。我该怎么做呢?我看到的示例在后台进程中运行.exe,这不是我想要的

谢谢。

看看这个,看看如何从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();
在控制台应用程序中,如果您使用
环境退出,则可以设置退出代码。退出(状态代码)
或从控制台应用程序的主功能返回int值。或者,您可以写入输出,然后在服务中检查退出代码(
process.ExitCode
)或输出流,以便确定进程是否已成功退出。

谢谢:)不敢相信我没有注意到进程api文档中的WaitForExit()。