【发布时间】:2011-12-21 12:46:44
【问题描述】:
我正在编写一个多线程控制台应用程序,它从 Web 下载 pdf 文件并将其本地复制到我们的内容服务器位置(Windows 服务器)。这也是将文件提供给我们网站的同一位置。 我对这种方法持怀疑态度,因为存在并发问题,例如,如果网站上的用户从内容服务器请求 pdf 文件,同时控制台应用程序正在写入或更新该文件,则可能存在一个 IO 异常。 (如果原始内容随时间变化,应用程序也会更新 pdf 文件) 有没有办法控制并发问题?
【问题讨论】:
-
在控制台应用程序完成下载之前,用户如何知道文件?
-
好吧...该应用程序运行多次,并根据对原始 pdf 的更新来更新现有文件。因此,如果用户正在访问控制台应用程序尝试更新的特定文件,则会发生 IO 异常并且文件不会更新
-
关于下载:您最好下载到一个位置,然后将文件移动到另一个位置,以便在完全下载后提供它们。
-
为什么抛出 IOExcpetion 会是一件坏事?
-
如果抛出异常,我将无法更新 pdf,这是一件坏事。有没有办法让线程等待文件上的 IO 操作完成然后做它的事情?
标签: c# .net windows concurrency io