我有一个多线程应用程序。我的问题是,有时我得到一个错误,就像程序无法访问一个文件,因为它已被别的东西(应用程序的其他部分)使用。最佳解决方案解决文件无法访问错误
现在我所做的就是捕捉异常并在100ms延迟后重复执行任务。
它正在工作,因为应用程序不会经常打开这些文件,它只是在短时间内打开这些文件。
尽管我不满意该解决方案,因为它很丑,而且仍然可能出错。
有没有什么好的方法来解决这个问题?如果没有简单的答案,并且您需要有关应用程序的更多信息(哪些文件,为什么我可以在同一时间访问),我可以回答,我只是试图保持简单和通用的问题。
问候 丹尼尔
编辑:
我做了一些快速,你们认为有关的解决方案是什么,它不是最通用的一个,只是现在没有更好的主意:
当程序试图写入文件时,检查它是否被使用。如果使用它在内存中收集数据,只要应用程序想要再次写入文件并且文件是空闲的,则插入所有数据。
它仍然不是最好的,但它可能会提供更多的想法。
你如何打开文件?你可以在'FileStream'构造函数中使用'FileShare.ReadWrite'参数吗?请参阅http://msdn.microsoft.com/en-us/library/5h0z48dh.aspx – Gabe
相关问题http://stackoverflow.com/questions/3808474/whats-the-right-pattern-for-waiting-on-a -file-lock-to-be-released – PeskyGnat
@Gabe我正在使用StreamWriter。当我读取文件时,我需要读出所有的数据直到最后,当我插入数据到最后。如果我分享这个文件,会不会得到小狗(丢失数据)? – Daniel