2

C++ .net タイマーの使用方法を学習しようとしています。ここに示す例では:

http://msdn.microsoft.com/en-us/library/system.timers.timer.elapsed.aspx

それが言うコードで:

// Hook up the Elapsed event for the timer.
aTimer->Elapsed += gcnew ElapsedEventHandler( Timer1::OnTimedEvent );

+= がオーバーロードされているようです。この文脈でそれはどういう意味ですか?

また、リンクの例で、出力に示されているように、タイマーが繰り返し開始および停止する理由がわかりません。

 The Elapsed event was raised at 5/20/2007 8:42:27 PM
 The Elapsed event was raised at 5/20/2007 8:42:29 PM
 The Elapsed event was raised at 5/20/2007 8:42:31 PM

私の理解では、一度開始して停止するだけです。

4

1 に答える 1

4

タイマーの Elapsed イベントにイベント ハンドラーを追加しています。

次のようなものになります。

aTimer->Elapsed.AddHandler(gcnew ElapsedEventHandler(Timer1::OnTimedEvent));

そんな機能があれば。

ElapsedEventHandler のコンストラクタで指定された関数がタイマーによって呼び出され、設定された時間が経過したことをユーザーに通知します。

2 番目の質問に関しては、ドキュメントの最初の段落で次のように説明されています。

Enabled が true に設定され、AutoReset が false に設定されている場合、Timer は Elapsed イベントを、最初に間隔が経過したときに 1 回だけ発生させます。

したがって、明らかに、論理的に同一のステートメントは次のようになります。AutoReset が true に設定されている場合、Timer は Elapsed イベントを無期限に発生させます。

また、AutoReset を false に設定したままにして、イベント ハンドラー内から Reset() 関数を呼び出すこともできます。これにより、タイマー コールバックが重複しないようにすることができます。

于 2012-11-30T20:24:58.300 に答える