2016-08-24 3 views
2

私はボタンがあるWebフォームを持っています。そのボタンをクリックすると、テキストファイルが作成され、何かを書きます。私は大きなものを書くようです1Gのコンテンツは1日に1回変更されます。これはasp.netアプリケーションであり、多くのユーザーが使用します。最初のユーザーが朝6時にクリックすると、生成されます。これは、asp.netアプリケーションであるthread.Soのように傾けると思う私はASP.netでメソッドを一度実行する方法

を考えていない午前:it.Iが

try 
{ 
    File.WriteAllText("E:\\test.txt", "welcome"); 
} 
catch (Exception ex) 
{ 
     Response.Write(ex.Message); 
} 

NB小さなプロトタイプのコードを掲載しています行うには、次の朝まで6 O clock.How新しいもの

While(true) 
{ 
    Thread.Sleep() etc 
} 

答えて

2

使用File.GetLastWriteTimeファイルの最後の変更を確認するための方法

try 
{ 
    if(!File.Exists("E:\\test.txt")) 
    { 
    File.WriteAllText("E:\\test.txt", "welcome");  
    } 
    else 
    { 
     if(File.GetLastWriteTime(path).Day != DateTime.Now.Day) 
     { 
     //code for next day 
     } 
    } 

} 
catch (Exception ex) 
{ 
    Response.Write(ex.Message); 
} 
+0

日チェックは '='でなく '='である必要があります。また、複数のユーザーがボタンをクリックしたときの問題も解決されていません。ファイルは複数回生成されます。 –

1

あなたは毎日新しいファイルを作成しており、その日の終わりに既に削除ロジックが設定されているとします。 ファイルを作成する前に、そのファイルが存在するかどうかを確認して確認してください。

try 
     { 
      if (//file does not exist) 
       File.WriteAllText("E:\\test.txt", "welcome"); 
     } 
     catch (Exception ex) 
     { 
      Response.Write(ex.Message); 
     } 

また、(ロジック「が存在する」とあれば同じ条件で)その後、新しいものを削除して作成し、あなたのパラメータの外側にファイルの日付にしているかどうかを確認できます。

+0

をそれはpress.Iはそれを意味以降誰でも毎日の朝6 Oクロックを作成する必要があります1日に1回変更されます – peter

+0

@peterファイルの日付を調べることに関する私の編集を確認してください – Seano666

1

これは、同じファイルを2回書いてから、二つ以上のスレッドを防ぐ必要があります。

ロックを取得する最初のスレッドはファイルを作成し、他のスレッドはロック内のファイルの2番目のチェックでファイルの作成をスキップします。

public static object fileLock = new object(); 

public void createFile() 
{ 

    if (File.Exists("filepath") == false) { 

     lock (fileLock) { 

      if (File.Exists("filepath") == false) { 
        File.WriteAllText("E:\\test.txt", "welcome"); 
      } 

     } 

    } 
} 
1

おそらく、あなたは、ファイルが書き込まれた最後の時間(日付の値)を格納するために、アプリケーション変数を使用して試してみて、単にファイルのみがこれまでに1日1回書かれていることを確認する必要があります。例:アプリケーションの状態の詳細については

Dim dt as DateTime 
If TryCast(Application("LastFileWrite"), dt) Then 
    If String.Compare(dt.Date.ToString(), Now.Date.ToString()) <> 0 Then 
     ' we're a different day today, go ahead and write file here 
    End If 
Else 
    ' we've never writting this application variable, this is 
    ' the first run, go ahead and write file here as well 
End If 

、次のドキュメントを見て取る:

https://msdn.microsoft.com/en-us/library/bf9xhdz4(v=vs.71).aspx

関連する問題