我还没有使用Queue集合。但根据我能够收集的信息,似乎这是解决我的问题的正确方法。
我有控制台应用程序扫描文件夹中的某些类型的新文件。根据具体标准。只有新项添加到queue.xml文件中。这是在某个时间间隔(每1小时)完成的。
另一个控制台应用程序在不同时间点(每4小时)触发一次。它读取queue.xml文件并传递每个项目以进行处理。似乎最好的方法是解析xml文件并创建Queue集合。这样,每个项目都将按顺序处理。
这是问题所在。处理文件可能需要几个小时,在此期间queue.xml可能会有一些新项目,因此Queue Collection不会反映此更改。
是否可以再次解析xml文件并将新项目添加到当前正在进行的队列中?
在运行时更改Collection的大小会导致问题。它的队列是不同的吗?
答案 0 :(得分:1)
是否可以再次解析xml文件并将新项目添加到当前正在进行的队列中?
当然,您只需要定义安全的规则。
在两个应用程序中使用mutex在读/写期间锁定文件,并在处理应用程序中订阅FileSystemWatcher事件以检测文件何时更改。
在运行时更改Collection的大小会导致问题。它的队列是不同的吗?
在运行时更改任何集合的大小是安全的,这通常是您使用集合的原因(例如,由于某种原因,他们使用Add()
方法)...您只需要在解决方案的背景下安全地做到这一点。
如果存在对队列的多线程访问,请将其锁定。
如果队列大小有可能在迭代期间发生变化,则迭代队列副本。
如果某个进程有可能更改两个应用程序所需的文件,请将其互斥以控制访问。