-4

日替わりイベント(1つのイベント、機能のみ)の実装について誰か助けてもらえますか?これしか要らない…

アルゴリズムの作成について誰か助けてくれませんか?

  • 「28-06-2013」のようなログ ファイルにすべてのイベントを記録するロガー システムを作成します。日の変化を理解し、新しいログ ファイルを作成するためのイベント システムを作成する必要があります。

  • System.Timers.Timer を作成しようとしましたが、良い方法ではありません。x 秒まで待機 (スリープ) するスレッドを作成します。(x = 翌日までのミリ秒)

EDIT:最初の日付とDateTime.Nowをチェックする関数はありません!おそらく x 秒ごとにこのメソッドを呼び出す必要があるためですが、「Thread.Sleep(x);」のような答えが必要です。実装!つまり、パフォーマンスは私にとって重要です (ネットワーク プロジェクトでこの実装を使用します)。

4

4 に答える 4

4

あなたが使用することができます:

DateTime now = DateTime.Now;
DateTime tomorrow = now.AddDays(1).Date;

double durationUntilTomorrow = (tomorrow - now).TotalMilliseconds;

「28-06-2013」のようなログ ファイルにすべてのイベントを記録するロガー システムを作成します。日の変化を理解し、新しいログ ファイルを作成するためのイベント システムを作成する必要があります。

あなたの目標がこれをロガーに入れることだとすれば、ロギングメソッドでこれを処理する方がきれいです。最後の書き込み時間を追跡する場合は、ロギング メソッドが新しい日付で呼び出されるとすぐにログをインクリメントできます。

このアプローチを使用することの唯一の欠点は、ログ イベントがまったくない日が発生した場合です。 )。

于 2013-06-28T16:49:43.883 に答える
3

最も簡単な方法は、ログ メッセージを書き込むたびに日付を保存することです。次に、ログ メッセージを書き込もうとしているときに、現在の日付と前の日付を比較します。一致しない場合は、新しいログ ファイルを開始します。スレッドなどは必要ありません。. .

private _lastWriteDate = DateTime.MinValue;

public void LogIt(string message)
{
    var nowDate = DateTime.Now.Date;
    if (nowDate != _lastWriteDate)
    {
        // close current log and open a new one
    }
    WriteLog(message);
    _lastWriteDate = nowDate;
}

シンプルで効果的。

于 2013-06-28T17:00:37.630 に答える
2
 DateTime now = DateTime.Now;
 DateTime tomorrow = now.AddDays(1);
 TimeSpan duration = tomorrow.Date - now;
于 2013-06-28T16:45:49.240 に答える
1

そのようなものをチェックするスレッドまたはタイマーを作成します。

private DateTime today;
private void IsNextDay()
{
    if (DateTime.Now.Substract(today.Date.AddDays(1)).TotalMilliseconds <= 0)
    {
        today = DateTime.Now; //Next Date so you can check every day

        //FireCustom-Event or do your work here
    }
}

編集:あなたの編集に基づいています。ファイルを開いたり、Db接続などを保持したりする必要がありますか? そうでない場合は、各ログエントリに実際の日付を書き込むことができます。つまり、次のようなものです。

using (StreamWriter w = File.AppendText(#FileNameWithDateGoesHere#))
于 2013-06-28T16:54:11.593 に答える