我的系统有两个应用程序A和B.有多个B运行实例。应用程序A和B不直接相互通信。它们共享同一个文件夹。
应用程序A将文件复制到文件夹,其中应用程序B的实例将该文件复制到其自己的临时文件夹并开始处理。这里的问题是:有许多应用程序B的实例。可能发生的情况是,并非应用程序B的所有实例都没有将文件复制到其自己的临时文件夹,而应用程序A则是关于复制新文件以覆盖以前的文件。之一。
应用程序A和B是用C#编写的。由于应用程序A不知道有多少B运行实例因此我遇到了阻止A启动复制过程的问题,而B还有其他实例需要将文件复制到其临时文件夹。
答案 0 :(得分:0)
您的A
不应该覆盖它生成的任何先前文件 - 它不知道是否有更多B
个实例要处理该文件。相反,A
需要在输出文件夹中创建新文件,因为它会产生输出 - 一种好的方法是使用时间戳作为文件名的一部分,以便可以按日期顺序排序多个文件(文件创建日期也可以用于此目的)。
B
的实例应使用共享文件(MySql数据库等),该文件使用给定文件跟踪B
的实例。应使用互斥锁/信号量同步对此共享文件的访问(如果访问尚未同步)。当所有B
实例都使用文件完成时,最后一个实例可以删除不再需要的输入文件。如何做到这一点取决于B
的实例之间可以进行何种通信。
请记住,这只是一个想法 - 这是一个相对复杂的问题,有几种方法可以解决它。