c# - IO操作的并发问题

标签 c# .net windows concurrency io

我正在编写一个多线程控制台应用程序,它从网络下载 pdf 文件并将其本地复制到我们的内容服务器位置(Windows 服务器)。这也是向我们的网站提供文件的同一位置。 我对这种方法持怀疑态度,因为存在并发问题,例如,如果网站上的用户从内容服务器请求 pdf 文件,并且同时控制台应用程序正在写入或更新该文件,则可能会出现以下情况: IO 异常。 (如果原始内容随时间发生变化,该应用程序还会更新 pdf 文件) 有没有办法控制并发问题?

最佳答案

您可能希望创建和更新文件的操作是原子的,以便处理这些文件的任何其他进程都能获得正确的版本,而不是仍处于打开状态以进行写入的版本。

您可以将它们写入临时目录,然后将它们移动到将提供服务的目录中,而不是实际将文件写入将要提供服务的位置。

同样,为了更新它们,您应该检查当您的应用程序更新这些 pdf 时,文件本身在写入完成之前不会更改。例如,您可以通过在应用程序开始写入文件后让应用程序休眠来测试这一点。

关于c# - IO操作的并发问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8001411/

相关文章:

c# - 为什么 Process.Start 会意外返回 false

c# - 从字符串数组中删除最后一项

windows - 使用 PowerShell 将空文件夹列表从一个卷移动到另一个卷

javascript - 使用 JINT 从 javascript 文件读取 JSON 对象

c# - IIS 垃圾收集挂起许多应用程序域

java - 在 Windows 中使用 Java 将焦点设置到非 Java 应用程序

javascript - Node.js readline-sync 卡住我的服务器(Windows)

c# - 多个源绑定(bind)到相同的目标依赖属性

c# - Nhibernate 查询具有多个获取和多个条件

c# - 使用不同的参数多次调用 BackgroundWorker.RunWorkerAsync()