繁体   English   中英

如何杀死 C# 上的后台进程

[英]How To Kill Background Process on C#

我想用 c# 构建自己的 Rdp 程序。 这就是为什么我制作了一个登录页面屏幕并从用户那里获取登录输入。 之后为了启动 rdp 进程,我使用了这段代码。

 Process rdcProcess = new Process();
        rdcProcess.StartInfo.FileName = Environment.ExpandEnvironmentVariables(@"%SystemRoot%\system32\cmdkey.exe");
        rdcProcess.StartInfo.Arguments = $"/generic:TERMSRV/{ipaddressbox.Text} /user: {usernamebox.Text} /pass: {passwordbox.Text}";

        rdcProcess.StartInfo.FileName = Environment.ExpandEnvironmentVariables(@"%SystemRoot%\system32\mstsc.exe");
        rdcProcess.StartInfo.Arguments = $"/v {ipaddressbox.Text}"; // ip or name of computer to connect
        rdcProcess.Start();

当我使用我的用户信息登录时,会打开一个表单,并且 rdp 程序可以正常运行。 但是,当我关闭该表单屏幕时,远程桌面连接并没有结束,它继续在后台工作。 我的要求是,当我关闭表单时,远程桌面连接断开并终止 rdp 进程。 我怎样才能做到这一点?

您必须在表单的“on_close”事件中编写终止进程代码。 像下面的代码:

private void Form1_Closing(object sender,System.ComponentModel.CancelEventArgs e)
{
         Process.GetProcessesByName("rdcProcess").FirstOrDefault().Kill();
}

我解决了这个问题。 当我关闭 rdp 屏幕时,mstsc 进程正在死去。 我编写了一个 if 块来检查这一点,如果 mststc 进程没有运行,则退出程序。

    Process[] pname = Process.GetProcessesByName("mstsc.exe");
    if (pname.Length == 0)
    {
        Application.Exit();
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM