2011-07-04 7 views
0

私は.aspxフォームのWebフォームを使用しており、ユーザーの詳細情報を取得し、その詳細をサーバー上のC#のCSVファイルに書き込みます。私の質問は、CSVファイルへの複数の書き込みを制御して、データが乱れることがないようにする方法です。私は絶対にサーバー上でCSVファイルを使用する必要があります、データベースまたはそれを記録するための他の方法は私にとってはオプションではありません。CSVファイルの作成ASP.NETの同時処理の問題

私はMutexを使用することが有用かもしれないことを見てきました。最も効率的でシンプルなソリューションを探しているので、他にどのようなオプションがあるのだろうかと思っていましたか?私はASP.NETとC#を初めて使っているので、事前にお詫び申し上げます。

答えて

2

mutex/lockを使用するのが最も簡単です。あなたはサイトがcsvファイルの唯一の作家であると仮定します。コードは表示されないので、私はCsvWriterクラスを持っていると仮定します:

public class CsvWriter 
{ 
    const string path = "myfile.csv"; 

    static object synch = new Object(); 

    public void AppendCsv(string newData) 
    { 
     lock (synch) 
     { 
      File.AppendAllText(path, newData); 
     } 
    } 
} 
+0

+1ありがとう、これは役に立ちます。コードでは、 'object synch'は、ファイルへのアクセスを制御するための単なる制御オブジェクトです。他の機能はありませんか?ちょうど私が正しい行に沿って行っていることを確認するためにチェックすると思った。 – adamjmarkham

+0

はい、そのファイルへのアクセスを制御するためにのみ使用されます。一度に1つのスレッドだけが(同期を介して)「同期」を所有することができます。 –