在c#

时间:2017-07-08 05:14:16

标签: c# console-application

我有2个控制台应用程序。

Application_B和Application_C。两个应用程序都从中收集数据 Application_A。

假设我先运行Application_B并从Application_A获取数据。同时,如果我运行Application_C,它应该显示已填充值的消息,或者类似的东西。

3 个答案:

答案 0 :(得分:0)

最适合您案例的选项:

将值保存到App_B中的文件中,并让App_C检查其存在并阅读。

详细答案:

你需要做两件事:

  • 将值保存在某处或以其他方式使其可用于从App_C
  • 中读取
  • 事件的信号App_C

有许多可能的解决方案包括:

  • 最简单:将值保存到文件中(如果它是整个结构,可能是serializing)并使App_C检查其存在
  • 如果值必须仅在App_B运行时可用,则后者可以提供通过IPC读取它的方法。然后,App_C可以检查App_B的进程和/或通信通道(例如命名管道)的可用性。

答案 1 :(得分:0)

我强烈建议您在开发阶段之前阅读Application Domain概念。这是一个摘录。 资料来源:https://docs.microsoft.com/en-us/dotnet/framework/app-domains/application-domains

  

操作系统和运行时环境通常提供某种形式   应用程序之间的隔离。例如,Windows使用进程   隔离应用程序。这种隔离对于确保这一点是必要的   在一个应用程序中运行的代码不会对其他应用程   不相关的申请。应用程序域提供隔离   安全性,可靠性和版本控制以及卸载的边界   组件。应用程序域通常由运行时创建   主机,负责引导公共语言   运行应用程序之前的运行时。

您可以利用一些解决方案来解决您的问题。 使用共享存储库可能是一个很好的解决方案。此存储库可以是文件或数据库。

答案 2 :(得分:0)

您的问题不是很明确,但似乎Application_A正在获取/生成Application_BApplication_C可以收集的数据。如果其中一个(B/C)已经收集了数据,则其他人应该显示“已收集的数据”或“不再有数据”等消息。

Application_A必须提供两件事:

  1. 将数据存储在某处。可以保护它以进行并发访问。您可以考虑使用Mutex。

  2. 标志:这表示是否有更多数据可用。一旦B / C读取数据,您就可以重置。

  3. 您可以将数据保存在B / C可以收集的全球位置,A将写入或者数据可以保存在C,并在请求后传递给B / C.但为此,您必须决定进程间通信的协议。