繁体   English   中英

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

[英]Writing to buffer before writing to file to avoid being locked out

我目前正在从事ac#项目,需要将内容写入文件。 在写入文件时,有一个单独的线程访问文件以获取文件大小,因此有时在我写入文件时,由于文件大小检查已将文件锁定而被锁定。

我当时想做的事情是创建某种缓冲区,但是每当我用它搜索时,它就会产生关于网络流的问题,而网络流并不适合作为本地缓冲区。 该计划是什么,而不是线程直接写入文件,而是写入某种缓冲区,然后一个单独的线程检查文件是否可写,然后读取缓冲区并将内容写入文件。

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

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

感谢您的任何帮助,您可以提供。

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

您可以对队列使用BlockingCollection。

获取文件的长度不应锁定文件。 您如何进行这项手术?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM