0

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

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

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

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

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

4

2 回答 2

0

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

您可以为队列使用 BlockingCollection。

于 2012-04-21T20:52:03.320 回答
0

获取文件的长度不应锁定文件。你是怎么做那个手术的?

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

于 2012-04-21T20:56:59.433 回答