C# Can';不是关闭进程而是杀死
我有一个奇怪的问题 我在一个项目上工作了很长时间,该项目打开和关闭(如果无法关闭,则终止)进程,这些进程在我的本地计算机上运行良好,但在服务器上存在问题 这段代码可以打开和终止进程,但在关闭进程时总是超时 下面的行不做这项工作C# Can';不是关闭进程而是杀死,c#,multithreading,process,server,C#,Multithreading,Process,Server,我有一个奇怪的问题 我在一个项目上工作了很长时间,该项目打开和关闭(如果无法关闭,则终止)进程,这些进程在我的本地计算机上运行良好,但在服务器上存在问题 这段代码可以打开和终止进程,但在关闭进程时总是超时 下面的行不做这项工作 Parallel.ForEach(Process.GetProcessesByName(applicationName), (Process obj) => {
Parallel.ForEach(Process.GetProcessesByName(applicationName),
(Process obj) =>
{
AddLog("Waiting for " + obj.ProcessName + " to exit at " + DateTime.Now);
obj.CloseMainWindow();
obj.WaitForExit(60000);
});
System.Threading.Thread.Sleep(1000);
if (Process.GetProcessesByName(applicationName).Length != 0)
{
AddLog("Process couldn't exited. Trying to kill at " + DateTime.Now);
if ((killable).ToString() == "T")
{
Parallel.ForEach(Process.GetProcessesByName(applicationName),
(Process obj) =>
{
obj.Kill();
AddLog(obj.ProcessName + " was killed at " + DateTime.Now);
EventLogEntry(obj.ProcessName + " was killed!!!!!", EventLogEntryType.Error, 4003);
});
}
}
提前感谢。根据的文档,无法保证在调用该方法时进程将退出。您试图关闭的进程可能正在显示模式对话框。也可能是未关闭的应用程序没有图形界面(在这种情况下,您必须使用
Kill
终止它)。下文提供了相关文件
通过调用CloseMainWindow
退出进程的请求不会强制应用程序退出。应用程序可以在退出前请求用户验证,也可以拒绝退出。要强制退出应用程序,请使用Kill
方法
如果CloseMainWindow
失败,您可以使用Kill
终止进程。Kill是终止没有图形界面的进程的唯一方法
我注意到
CloseMainWindow
返回一个bool
。您可能希望尝试读取该值,并且仅当该值为true
时才读取该值。您还可以尝试远程连接到服务器,并将调试器连接到相关进程,以查看它为什么不关闭。如何解释该方法在本地计算机上工作,但在服务器上不工作?我不知道。你的问题中没有提供足够的细节让别人回答。您试图终止的进程是什么(即applicationName
)?您是否尝试过远程访问服务器并查看发生了什么?这个过程是从什么选项开始的?本地和服务器上的进程是否相同?