2010-11-22 17 views
0

私はファイルにいくつかのことを書くasp.net 2.0のウェブサイトを持っています。しかし同時に、別のユーザーがそのサイトをヒットした場合、そのファイルの最初の操作が完了してから2番目の操作が完了してからファイルを操作できるまで機能しません。 このような状況をどのように処理するか。実行方法1つのファイルに対して複数の書き込みオペレーションを実行しますか?

  AppConfiguration appConfiguration = new AppConfiguration(); 
    string LogFile =String.Empty; 
    string sLogFormat =string.Empty; 
    string sErrorTime =string.Empty; 
    StreamWriter sw=null; 
    public LogManager() 
    { 

     if(!File.Exists(AppConfiguration.LogFilePath)) 
     { 
      Directory.CreateDirectory(AppConfiguration.LogFilePath); 
     } 

     LogFile = AppConfiguration.LogFilePath+"WAP"+sErrorTime + ".log"; 
     if(!File.Exists(LogFile)) 
     { 
     File.Create(LogFile); 
     } 
    } 

    public void closeStream() 
    { 
     if(sw != null) 
     { 
      sw.Close(); 
     } 
    } 

    public void LogException(string className,string methodName, string errorMessage) 
    { 
     try 
     { 
      if(!File.Exists(LogFile)) 
      { 
       File.Create(LogFile); 
      } 

      sw = new StreamWriter(LogFile,true); 

      sw.WriteLine(DateTime.Now.ToString() + " | " + className + ":" + methodName + ":"+ errorMessage); 
      sw.Flush(); 
      sw.Close(); 
     } 
     catch(Exception) 
     { 
      if(sw != null) 
      { 
       sw.Close(); 
      } 
     } 

    } 
+1

@Sandy;これが起こっている理由は、コードによって異なります。あなたはそれを私たちと分かち合うことができますか? – BeemerGuy

+0

スレッドとロック –

+0

ログファイルをSQLデータベース内のテーブルに置き換える必要があります。 – SLaks

答えて

0

すべてのエントリのログファイルを開いたり閉じたりするのではなく、ログファイルを開いたままにする単一のログプロセス(syslogまたは別のログスレッド)があると考えられます。

-1

プレーンテキストファイルに行を書き込むと、複数のユーザーがそれを処理しようとすると混乱することになります。むしろ、データベースを使用してテキストを格納/取得できます。必要に応じてレコードをプレーンテキストファイルにエクスポートするためのボタンをどこかに用意することもできます。

+0

OPはフラットファイルを使用したいと述べました。 「データベースを使う」と答えることは、本当に彼らの質問に対する答えではありません。 –

+0

このユースケースでは、データベースがほとんど効率的ではありません。 – Slartibartfast

+0

@rockinthesixstringレッスンをありがとう。答えを投稿した時点で、Sandyはフラットファイルのみを使用したいと言っていませんでした。 – vamyip

関連する問題