Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 23060|Répondre: 1

[Source] Solution de fichiers en lecture seule multithread .net/c#

[Copié le lien]
Publié sur 11/10/2017 15:06:48 | | | |
Exception non traitée : System.AggregateException : Une ou plusieurs erreurs sont survenues. ---> System.IO.IOExcetion : Le fichier « C :\SyncTemp\Position\Taxi\2017\09\09\Time\0000.dat » est utilisé par un autre processus, donc ce fichier ne peut pas être consulté.
   à System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   Dans System.IO.FileStream.Init(chemin de chaîne, mode FileMode, accès à FileAccess, droits Int32, DroitsUsage booléens, partage FileShare, BufferSize Int32, options Options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   Dans System.IO.FileStream : ctor(Chemin de chaîne, mode FileMode, accès à FileAccess, partage FileShare)
   Dans System.IO.File.Open(chemin de chaîne, mode FileMode, accès FileAccess)
   À ConsoleApp1.FileReadHelper.SingleFile(String path) emplacement C :\project\my\TestNet\ConsoleApp1\FileReadHelper.cs : ligne numéro 27
   Dans ConsoleApp1.FileReadHelper.<>c__DisplayClass3_0. <MultipleFilesAsync>b__0(String x) Position C :\project\my\TestNet\ConsoleApp1\FileReadHelper.cs : Ligne numéro 68
   Dans System.Threading.Tasks.Parallel.<>c__DisplayClass17_0'1. <ForWorker>b__1()
   Dans System.Threading.Tasks.Task.InnerInvokeWithArg(TaskChildTask)
   Dans System.Threading.Tasks.Task.<>c__DisplayClass176_0. <ExecuteSelfReplicating>b__0(Objet)
   --- Fin de la --- de trace interne de la pile d’exceptions
   Dans System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
   Dans System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
   Dans System.Threading.Tasks.Parallel.ForWorker[TLocal](Int32 fromInclusive, Int32 versExclusive, ParallelOptions, ParallelOptions, Action'1 body, Action'2 bodyWithState, Func'4 bodyWithLocal, Func'1 localInit, Action'1 localFinally)
   Dans 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)
   à System.Threading.Tasks.Parallel.ForEach[TSource](IEnumerable'1 source, Action'1 corps)
   Dans ConsoleApp1.FileReadHelper.MultipleFilesAsync(IEnumerable'1 path) à l’emplacement C :\project\my\TestNet\ConsoleApp1\FileReadHelper.cs : ligne numéro 66
   À ConsoleApp1.Program.Main(String[] args) position C :\project\my\TestNet\ConsoleApp1\Program.cs : ligne numéro 73
Veuillez appuyer sur n’importe quelle touche pour continuer...




L’erreur est évidente, c’est-à-dire que le fichier ne peut pas être accédé, le fichier ne peut pas être lu, ce qui constitue une exception dans le multithreading

J’ai lu comment le document est rédigé :

Je n’ai défini que le mode lecture, pas le mode écriture, et j’ai constaté qu’en multithreading, il y aura toujours une erreur, ce n’est pas en lecture seule ?

Si c’est en lecture seule, cela ne devrait pas être une erreur

Solution:



Cela devrait lire les fichiers en mode lecture seule, l’avoir testé, et constaté que ce n’est pas une erreur, et que le même fichier peut être lu en même temps sous plusieurs threads




Précédent:Tutoriel d’installation en un clic pour la réinstallation de l’assistant système Guide de réinstallation en un clic de l’assistant système
Prochain:Opération de lecture .net/c# pour lire toutes les lignes du fichier par lots
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com