Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 监视具有多个服务器的共享文件夹_.net_Windows_Service_Concurrency_Filesystems - Fatal编程技术网

.net 监视具有多个服务器的共享文件夹

.net 监视具有多个服务器的共享文件夹,.net,windows,service,concurrency,filesystems,.net,Windows,Service,Concurrency,Filesystems,我有一个windows服务,它监视一个共享文件夹,并在创建文件时对其进行处理,然后将其删除。为此,我设置了一个计时器,每10秒查询一次文件夹中的文件,并设置了一个BlockingCollection,在多个线程之间分割工作 到目前为止,这个解决方案对我来说还不错,但现在我想在多台服务器上运行该服务的多个实例,监视同一个输入文件夹 问题当然是同步服务以避免相互干扰 想到的一个解决方案是将监控本身分离到不同的“主”节点,并使用多个实例作为从属节点,但我希望服务实例保持独立 遇到类似情况的人有什么想法

我有一个windows服务,它监视一个共享文件夹,并在创建文件时对其进行处理,然后将其删除。为此,我设置了一个计时器,每10秒查询一次文件夹中的文件,并设置了一个BlockingCollection,在多个线程之间分割工作

到目前为止,这个解决方案对我来说还不错,但现在我想在多台服务器上运行该服务的多个实例,监视同一个输入文件夹

问题当然是同步服务以避免相互干扰

想到的一个解决方案是将监控本身分离到不同的“主”节点,并使用多个实例作为从属节点,但我希望服务实例保持独立

遇到类似情况的人有什么想法吗?

如果该文件(我们将其命名为“filename.ext”)可以以独占模式打开以进行处理,这对您来说将是非常好的,因为除了打开该文件,您无需执行任何操作

如果文件夹本身是可写的,您可以在那里创建一个名为“filename.ext.sem”的信号量文件,让其他服务知道“filename.ext”文件正在处理中

如果以上这些都不适合您,那么您需要一些集中的位置作为信号量的占位符(可以是文件、DB记录或其他内容)

在更复杂的情况下,您需要构建一个具有dynamic master的方案,其中一个实例扮演主实例的角色,而其他实例则是从实例,但在您的情况下,这将是一种过分的做法