Excepción no gestionada: System.AggregateException: Han ocurrido uno o más errores. ---> System.IO.IOException: El archivo "C:\SyncTemp\Position\Taxi\2017\09\09\Time\0000.dat" está siendo utilizado por otro proceso, por lo que este archivo no puede ser accedido. at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) En System.IO.FileStream.Init(String path, modo FileMode, acceso a archivos, derechos Int32, boolean useRights, FileShare compartido, Int32 bufferSize, opciones FileOptions, SECURITY_ATTRIBUTES secAttrs, String msgPath, boolean bFromProxy, boolean useLongPath, boolean checkHost) En System.IO.FileStream: ctor(String path, modo FileMode, acceso FileAccess, compartir FileShare) En System.IO.File.Open(String path, modo FileMode, acceso FileAccess) En ConsoleApp1.FileReadHelper.SingleFile(String path) ubicación C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs: línea número 27 En ConsoleApp1.FileReadHelper.<>c__DisplayClass3_0. <MultipleFilesAsync>b__0(Cadena x) Posición C:\proyecto\mi\TestNet\ConsoleApp1\FileReadHelper.cs: Línea número 68 En System.Threading.Tasks.Parallel.<>c__DisplayClass17_0'1. <ForWorker>b__1() En System.Threading.Tasks.Task.InnerInvokeWithArg(TaskChildTask) En System.Threading.Tasks.Task.<>c__DisplayClass176_0. <ExecuteSelfReplicating>b__0(Objeto) --- Fin de la pila interna de la pila de excepciones --- En System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) En System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken) En 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) En System.Threading.Tasks.Parallel.ForEachWorker[TSource,TLocal](IEnumerable'1 source, ParallelOptions, Action'1 body, Action'2 bodyWithState, Action'3 bodyWithStateAndIndex, Func'4 bodyWithStateAndLocal, Func'5 bodyWithEverything, Func'1 localInit, Action'1 localFinally) en System.Threading.Tasks.Parallel.ForEach[TSource](IEnumerable'1 fuente, cuerpo Acción'1) En ConsoleApp1.FileReadHelper.MultipleFilesAsync(IEnumerable'1 path) en la ubicación C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs: línea número 66 En ConsoleApp1.Program.Main(String[] args) posición C:\project\my\TestNet\ConsoleApp1\Program.cs: línea número 73 Por favor, pulse cualquier tecla para continuar...
El error es evidente, es decir, no se puede acceder al archivo, no se puede leer, lo cual es una excepción bajo multihilo
Leí cómo está redactado el documento:
Solo configuré el modo de lectura, no el modo de escritura, y descubrí que en multihilo seguirá habiendo un error, ¿no es solo lectura?
Si es de solo lectura, no debería ser un error
Solución:
Esto debería estar leyendo archivos en modo de solo lectura, lo probé y descubrió que no es un error, y que el mismo archivo puede leerse al mismo tiempo en varios hilos
|