c# - 如何在特定进程运行时将程序发送到后台

标签 c# multithreading process wait

我有一个程序可以启动另一个程序(iexplore.exe),然后我的程序应该“不可见”或至少进入背景,并在此asd.exe运行时停留在该位置。这段代码可以正常工作,但是会占用内存,有时在asd.exe不再运行时,它只是隐藏起来。必须有一种更有效的方法来执行此操作=)
所以我的程序代码:

   this.Hide();
   Process.Start(Path.Combine(Path, "iexplore.exe")); 
   Process[] Running_ = null;
   do
   { // this loops eats memory!
      System.Threading.Thread.Sleep(500);
      Running_ = null;
      Running_ = Process.GetProcessesByName("iexplore");
   }while (Running_.Length > 0);
   this.Show();

最佳答案

您将要在此处使用Process.Exited事件,防止阻塞UI线程,避免麻烦的线程。像这样:

    private void button1_Click(object sender, EventArgs e) {
        var prc = new Process();
        prc.EnableRaisingEvents = true;
        prc.Exited += processExited;
        prc.StartInfo = new ProcessStartInfo("notepad.exe");
        prc.Start();
        this.Hide();
    }

    private void processExited(object sender, EventArgs e) {
        this.BeginInvoke(new Action(() => {
            this.Show();
            this.BringToFront();
        }));
    }

关于c# - 如何在特定进程运行时将程序发送到后台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7584932/

相关文章:

java - ResponseListener 在 snmp4j 中的工作原理

struct - 将结构从一个进程发送到另一个进程的最简单方法是什么?

vb6 - 如何通过标题检查程序是否正在运行? (使用VB6)

c# - MS CRM - 预创建插件不会更改属性值

python - 我使用 django 连接池的多线程代码没有任何改进

java - Java中高效的多线程数组构建

java - 如何让java运行应用程序以及当用户关闭应用程序时,java在mac或windows中运行另一个进程

c# - 开发Unity增强现实vuforia应用并与原生android应用集成

c# - F#'s async state machines the same as C#' 是 async 还是 go-lang 的 go 命令?

c# - MVC4从SQL Server表检索图像文件到html图像