微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在多线程应用程序中创建文件的异常 - “另一个进程正在使用文件”

如何解决在多线程应用程序中创建文件的异常 - “另一个进程正在使用文件”

我在 C# Windows 服务中使用以下代码来创建或覆盖现有文件

function DonwnloadFile(string destinationfolder,string filename)
{
    using (var outputFileStream = System.IO.File.Create(
        destinationfolder + "\\" + filename,BUFFER_SIZE))
    {
        //Downloads a large file from cloud and writes it to the outputFileStream
        //...
        //...
    }
}

在下载文件(非常大)时,由于源文件已更新,因此向 DownloadFile 方法发出了另一个请求。 但是,抛出异常:

进程无法访问文件“[FileName with Path]”,因为它正被另一个进程使用。

如何实现解决方案,以便后续覆盖同一文件的请求等待,直到对同一文件的上一个文件写入操作完成。 此外,该解决方案应允许覆盖不同文件的请求不应等待,因为它不会引发任何异常。

我可以在确保锁定仅基于文件名起作用的同时使用锁定吗? 或者有人可以为这个问题提出更好的解决方案。

注意:DonwloadFile 方法每次都会被不同的线程调用

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。