この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 23060|答える: 1

[出典] .net/c# マルチスレッド読み取り専用ファイルソリューション

[リンクをコピー]
掲載地 2017/10/11 15:06:48 | | | |
処理されていない例外:System.AggregateException:1つ以上のエラーが発生しました。 ---> System.IO.IOException: ファイル「C:\SyncTemp\Position\Taxi\2017\09\09\Time\0000.dat」が別のプロセスで使用されているため、このファイルにはアクセスできません。
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   System.IO.FileStream.Init(String path、FileMode mode、FileAccess access、Int32 権利、ブール useRights、FileShare share、Int32 bufferSize、FileOptions options、SECURITY_ATTRIBUTES secAttrs、String msgPath、Boolean bFromProxy、Boolean useLongPath、Boolean checkHost)
   System.IO.FileStreamでは: ctor(文字列パス、ファイルモードモード、ファイルアクセスアクセス、ファイルシェア共有)
   System.IO.File.Open(文字列パス、ファイルモードモード、ファイルアクセスアクセス)
   ConsoleApp1.FileReadHelper.SingleFile(String path)の場所 C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs: 行番号27
   ConsoleApp1.FileReadHelper.<>c__DisplayClass3_0で。 <MultipleFilesAsync>b__0(文字列x) 位置C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs:行番号68
   In 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(オブジェクト)
   --- 内部例外スタックトレースの終了---
   System.Threading.Tasks.Task.ThrowIfExceptional(ブール値のincludeTaskCanceledExceptions)
   System.Threading.Tasks.Task.Wait(int32ミリ秒タイムアウト、キャンセルトークンcancellationToken)
   System.Threading.Tasks.Parallel.ForWorker[TLocal](Int32 fromInclusive, int32 to Exclusive, ParallelOptions parallelOptions, Action'1 body, Action'2 bodyWithState, Func'4 bodyWithLocal, Func'1 localInit, Action'1 localfinal)
   System.Threading.Task.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 localfinal)
   at System.Threading.Tasks.Parallel.ForEach[TSource](IEnumerable'1 ソース、Action'1 ボディ)
   ConsoleApp1.FileReadHelper.MultipleFilesAsync(IEnumerable'1 path)の場所C:\project\my\TestNet\ConsoleApp1\FileReadHelper.cs:行番号66
   At ConsoleApp1.Program.Main(String[] args) 位置 C:\project\my\TestNet\ConsoleApp1\Program.cs: line number 73
続行するにはどのキーでもお願いします...




エラーは明白で、ファイルにアクセスできず、読み取れず、マルチスレッド時に例外として発生します

私はその文書の書き方を読みました:

書き込みモードではなく読み取りモードだけを設定しましたが、マルチスレッドでもエラーが出ることがわかりました。読み取り専用ではありませんか?

読み取り専用であればエラーではないはずです

解決:



これは読み取り専用モードでファイルを読み込むべきで、テストしたところエラーではなく、同じファイルを複数のスレッドで同時に読み取れることがわかりました




先の:ワンクリック再インストールチュートリアルインストールアシスタント システムアシスタントのワンクリック再インストールガイド
次に:.net/c#ファイル読み取り操作は、ファイルの全行をバッチごとに読み込むことです
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com