如何处理两个进程之间的进程间通信
本文关键字:进程 之间 进程间通信 两个 何处理 处理 | 更新日期: 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
。
,
-
A
在B
启动后立即死亡。 -
B
下载然后应用msi -
B
启动A
并退出。无论下载是否完成,都会发生这种情况