我有一些进程会定期向文件添加行,还有一些会定期读取这些文件。这些文件不是很大,并且附件很常见但是很小。
我只可以在循环延迟计数器中捕获IOException,或者我可以使用静态ConcurrentDictionary
捕获异常是最棘手的问题,但是我担心最终读取的是不完整的文字。使用锁字典是更安全还是不必要?
[如果您担心读取不完整的文字,则可以始终将file.Open与FileShare.None
/ Fileshare.Read
结合使用。此操作与重试一起使用应该是安全的,但是如果存在争用,可能会很慢。
创建服务可能是最简洁的解决方案。在这种情况下,我会将所有写入/读取委派给服务,并在可能的情况下缓存文件,并使用队列来写出更改。
如果服务在某处丢失消息并且未释放锁,则仅将服务用于管理锁可能很危险。