我正在编写一个多线程控制台应用程序,它从网络下载 pdf 文件并将其本地复制到我们的内容服务器位置(Windows 服务器)。这也是向我们的网站提供文件的同一位置。 我对这种方法持怀疑态度,因为存在并发问题,例如,如果网站上的用户从内容服务器请求 pdf 文件,并且同时控制台应用程序正在写入或更新该文件,则可能会出现以下情况: IO 异常。 (如果原始内容随时间发生变化,该应用程序还会更新 pdf 文件) 有没有办法控制并发问题?
最佳答案
您可能希望创建和更新文件的操作是原子的,以便处理这些文件的任何其他进程都能获得正确的版本,而不是仍处于打开状态以进行写入的版本。
您可以将它们写入临时目录,然后将它们移动到将提供服务的目录中,而不是实际将文件写入将要提供服务的位置。
同样,为了更新它们,您应该检查当您的应用程序更新这些 pdf 时,文件本身在写入完成之前不会更改。例如,您可以通过在应用程序开始写入文件后让应用程序休眠来测试这一点。
关于c# - IO操作的并发问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8001411/