目前我尝试改进两个 Windows 服务(C#)的设计。服务 A 生成数据导出(csv 文件)并将它们写入临时目录。所以文件被写入一个临时目录,它是一个子目录。的主输出目录。然后文件被移动(通过File.Move
)到输出目录(在成功写入之后)。此导出可能由多个线程执行。
另一个服务 B 尝试在定义的时间间隔内从此输出目录中获取文件。如何确保Directory.GetFiles()
排除锁定的文件。
我是否应该尝试通过创建一个新的 FileStream(使用 () 来检查每个文件,如此处
Stream stream = new FileStream("MyFilename.txt", FileMode.Open)
所述 。或者生产者服务 (A) 是否应该使用由消费者服务 (B) 自动排除的临时文件名 (*.csv.tmp) 以及适当的搜索模式。并在移动完成后重命名文件。
- 是否有更好的方法来处理此类文件列表操作。