1

我有两个项目 A 和 B。其中项目 A 是系统托盘应用程序,项目 B 是主应用程序。当用户更改项目 B 的设置时,项目 A 需要自行更新。我如何通知项目 A 发生的变化?

我曾尝试使用全局事件,但这需要在应用程序 B 启动时创建应用程序 A 的新实例。

4

2 回答 2

4

有几种选择。一种方法是创建一个命名的EventWaitHandle。当项目 B 更新设置时,它会设置事件。项目 A 有一个等待该事件的线程。当它收到通知时,它会从设置中更新,然后重置事件。我在这里有一个简单的例子:从一个正在运行的控制台应用程序向另一个应用程序发送消息

如果项目 B 将新设置存储在项目 A 可以读取它们的位置,这将起作用。如果您想在内存中执行此操作(即项目 B 不保留设置),那么您需要在两个进程之间设置某种类型的通信。您可以使用MemoryMappedFile设置共享内存,在这种情况下,您仍然需要事件通知。

或者,您可以在项目 B 中使用服务器流和项目 A 中的客户端流设置命名管道。

于 2013-10-29T15:40:27.127 回答
0

您还可以使用 NancyFX 之类的东西,它允许自托管从每个应用程序公开一个 HTTP 端点,以允许在不需要物理文件的情况下进行通信。

查看: https ://github.com/NancyFx/Nancy/wiki/Self-Hosting-Nancy

于 2013-10-29T15:50:07.440 回答