如何处理两个进程之间的进程间通信

本文关键字:进程 之间 进程间通信 两个 何处理 处理 | 更新日期: 2023-09-27 18:08:58

我需要一些关于进程间通信的帮助。

我有一个应用A和应用B。应用程序B的目的是更新应用程序A。由于应用程序A不能更新自己,必须有一些dll需要更新,这就是使用应用程序B的原因。应用A启动应用B,应用B关闭应用A,开始更新应用A。更新过程分为两步1)复制msi位2)安装位

如果用户在第一步取消了应用程序B,而应用程序A正在等待,是否有办法通知应用程序A在更新被取消时提前启动应用程序A。

实现这一目标的最佳方法是什么?如何实现?互斥锁是唯一的解决方案吗?

如何处理两个进程之间的进程间通信

看一下XDMessaging,它使用Windows Messaging或File IO进行IPC。您也可以使用全局互斥锁或信号量来实现基本的信令。

另一种基本方法(如果适合的话)。下面的程序在一个新进程中启动应用程序B,并阻塞,直到它退出。您可以使用退出代码来控制行为。

Process appB = Process.Start("C:''applicationb.exe");
appB.WaitForExit();
int exitCode = appB.ExitCode;

你也可以创建一个与一些自定义对话框并行运行的更新MSI,并在更新之前使用自定义操作关闭其他应用程序。有许多方法可以实现这一点,从终止进程到通过Windows Messaging发送信号。

我不会使用Mutex。我会用EventWaitHandle

从一个正在运行的控制台应用程序发送消息到另一个。

我不认为这应该使用IPC完成。如果用户取消下载,我认为B应该启动A

,

  1. AB启动后立即死亡。
  2. B下载然后应用msi
  3. B启动A并退出。无论下载是否完成,都会发生这种情况