Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 23060|Respuesta: 1

[Fuente] Solución de archivos de solo lectura multihilo .net/c#

[Copiar enlace]
Publicado en 11/10/2017 15:06:48 | | | |
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




Anterior:Asistente de instalación tutorial de reinstalación con un clic Guía de reinstalación de un clic del asistente del sistema
Próximo:Operación de lectura de archivo .net/c# para leer todas las filas del archivo en lotes
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com