我对C#很陌生,并尝试确定文件操作的最佳实践。
我的应用程序使用Parallel.ForEach
来解析几个大文件。在该方法中,我使用StreamWriter
写入单个文件,但必须在该过程中锁定对象。我预计这种方法会变慢,并且知道我必须为文件IO设置一个单独的线程。
这让我想到了我的问题。 C#是否已为非阻塞,线程安全的文件IO提供命名空间?
谢谢!
答案 0 :(得分:3)
.NET为异步文件IO提供操作,它提供了同步异步操作的工具。如果你想要两个功能,你必须自己组合这两个工具,而不是特别困难。您可以创建一个简单队列来为您序列化异步操作,shown here。完成后,您可以在所有工作人员之间共享一个队列,让每个工作人员将{{1}}的呼叫排入队列进行写作。
请注意,您根本不需要单独的线程来编写文件。它可以是异步的,无需专用线程。