Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Can';不是关闭进程而是杀死_C#_Multithreading_Process_Server - Fatal编程技术网

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
)?您是否尝试过远程访问服务器并查看发生了什么?这个过程是从什么选项开始的?本地和服务器上的进程是否相同?