在写入文件之前写入缓冲区以避免被锁定

本文关键字:锁定 文件 缓冲区 | 更新日期: 2023-09-27 18:32:02

我目前正在处理一个 c# 项目,我需要将内容写入文件。在写入文件时,一个单独的线程访问文件以获取文件大小,因此有时当我写入文件时,它会被锁定,因为文件大小检查已锁定文件。

我想做的是创建某种缓冲区,但是每当我谷歌它时,它都会返回不适合作为其全部本地的网络流。计划是什么 而不是线程直接写入文件,它写入某种缓冲区,一个单独的线程检查文件是否可写,然后读取缓冲区并将内容写入文件。

另一个问题是我需要添加一个参数,以便当它写入文件时它会写入正确的文件,因为我的程序正在从多个地方接收输入,所以我需要将此值保留在缓冲区中的某个位置,但从我所看到的流来看,您只能写入字符串。

因此,基本问题是我如何写入缓冲区,然后从缓冲区读取,以便可以将其写入文件并将参数保留在缓冲区中,以便在写入文件时知道要写入哪个文件。

感谢您提供的任何帮助。

在写入文件之前写入缓冲区以避免被锁定

声明具有缓冲区空间和文件规范的类。 为每个写入创建一个,并将其排队到 BackgroundWorker 写入线程。线程将缓冲区实例取消排队,并使用适当的 sleep() 循环 etry 写入文件,以确保解决任何临时文件锁定问题。

您可以对队列使用 BlockingCollection。

获取文件的长度不应锁定文件。你是如何做这个操作的?

如果使用缓冲区,则长度检查操作将不再提供正确的值。