質問: line.Split(','); // 出力する foreach (var value in values) { System.Console.Write("{0} ", value); } System.Console.WriteLine(); } } } catch (System.Exception e) { // ファイルを開くのに失敗したとき System.Console.WriteLine(e.Message); } } ``` ### 試したこと ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。
回答: ご提示のコードでも、同時に同じファイルをReadしようとすると例外が発生してファイルがオープンできないのでスレッドセーフではあります。 同時読込のみ許容する場合は、StreamReaderクラスではなくFileStreamクラスを使って FileShare を FileShare.Read にします。 同時書込みもしたい場合はメモリ マップト ファイルがお勧めです。 プロセス間ファイル共有用の仕組みのマネージ版ですから、スレッド間でも問題なく使えます。 スレッドセーフなメソッドが出来たら非同期メソッドは簡単ですが、一応書いておきます。 ``` static async Task ReadCsvAsync() { await Task.Run((Action)ReadCsv); } ```