5

私はこのようなタイマーを実行しています:

    private void InitializeTimer()
    {
        Timer myTimer = new Timer();
        myTimer.Interval = 3000;
        myTimer.Enabled = true;
        myTimer.Tick += new EventHandler(TimerEventProcessor);
        myTimer.Start();
    }

3 秒ごとにイベントをトリガーします。イベントはそれほど重くはないと思います。ファイルからテキストを読み取り、テキストの長さとテキストボックス内のテキストを比較し、文字数が多い場合はボックス内のテキストを置き換えます。

しかし、タイマーのリソースはどれくらい重いのでしょうか? また、3 秒ごとにファイルからテキストを読み取るのは悪い考えですか (ファイルはプレーン テキストのログ ファイルです)。

4

2 に答える 2

6

タイマーはかなり軽量ですが、使用しているタイマーの種類によって多少異なります。3 秒ごとにタイマーを起動することは大したことではありませんが、Windows フォーム タイマーを使用している場合は、UI スレッドで発生するような重要な処理を Tick イベント ハンドラーが実行していないことを確認してください。(たとえば、ファイルFileInfo.Lengthを「読み取る」代わりに使用してファイルの長さを確認するなど)

とはいえ、ログ ファイルの変更を監視するにはFileSystemWatcher、タイマーを使用してファイルを継続的に再読み取りするよりも優れている可能性があります。ファイルが変更されたときにすぐに通知されるだけでなく、ファイルを継続的に読み取る必要がなくなります。

于 2012-07-09T18:34:12.603 に答える
0

TimerEventProcessorハンドラーを作るのと同じくらい重いと思います。それが答えのFileSystemWatcherように思えますが、必ずしもそうとは限りません。私の提案は、このハンドラーを処理する前にタイマーを停止し、コードの処理が完了したらタイマーを再開することです。

于 2012-07-09T18:46:25.547 に答える