架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 12260|回复: 1

[资料] .net/c# 多线程只读文件解决方案

[复制链接]
发表于 2017-10-11 15:06:48 | 显示全部楼层 |阅读模式
未经处理的异常:  System.AggregateException: 发生一个或多个错误。 ---> System.IO.IOException: 文件“C:\SyncTemp\Position\Taxi\2017\09\09\Time\0000.dat”正由另一进程使用,因此该进程无法访问此文件。
   在 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   在 System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   在 System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
   在 System.IO.File.Open(String path, FileMode mode, FileAccess access)
   在 ConsoleApp1.FileReadHelper.SingleFile(String path) 位置 C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs:行号 27
   在 ConsoleApp1.FileReadHelper.<>c__DisplayClass3_0.<MultipleFilesAsync>b__0(String x) 位置 C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs:行号 68
   在 System.Threading.Tasks.Parallel.<>c__DisplayClass17_0`1.<ForWorker>b__1()
   在 System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
   在 System.Threading.Tasks.Task.<>c__DisplayClass176_0.<ExecuteSelfReplicating>b__0(Object )
   --- 内部异常堆栈跟踪的结尾 ---
   在 System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
   在 System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
   在 System.Threading.Tasks.Parallel.ForWorker[TLocal](Int32 fromInclusive, Int32 toExclusive, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Func`4 bodyWithLocal, Func`1 localInit, Action`1 localFinally)
   在 System.Threading.Tasks.Parallel.ForEachWorker[TSource,TLocal](IEnumerable`1 source, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Action`3 bodyWithStateAndIndex, Func`4 bodyWithStateAndLocal, Func`5 bodyWithEverything, Func`1 localInit, Action`1 localFinally)
   在 System.Threading.Tasks.Parallel.ForEach[TSource](IEnumerable`1 source, Action`1 body)
   在 ConsoleApp1.FileReadHelper.MultipleFilesAsync(IEnumerable`1 path) 位置 C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs:行号 66
   在 ConsoleApp1.Program.Main(String[] args) 位置 C:\project\my\TestNet\ConsoleApp1\Program.cs:行号 73
请按任意键继续. . .


QQ截图20171011150029.jpg

报错很明显,就是无法访问文件,无法读取文件,这是在多线程下面抛出的异常

我读文件的写法:

我只设置了读模式,并没有设置写的模式,发现,多线程下面,还是会报错,难道不是只读吗?

如果,是只读,就应该不会报错啊

解决办法:



这个应该就是以只读模式来读文件了吧,测试了一下,发现不在报错,可以在多线程下面同时读取同一个文件




上一篇:一键重装教程装机助理一键重装系统助手的重装指南
下一篇:.net/c# 文件读取操作,批量读取文件所有行
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-20 16:26

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表