2

System.Windows.Forms.Timerを備えた MDI フォームがあり、一定時間後に従業員をログアウトするためにゆっくりとカチカチ音をたてます。

また、タイマーを使用している、または使用されていない他のフォームもあります。一部のタイマーはSystem.IO.Ports.SerialPortからの読み取り用であり、その他のタイマーは入力されたテキストを処理するため、または SQL 2000 データベースで変更されたレコードとして処理するためのものです。

ここで、シリアル ポートを使用する新しいフォームに別のタイマーを追加しようとしています。

PC で使用されるシリアル ポートは 1 つだけなので、MDI 親にシリアル ポート オブジェクトが含まれ、それらを必要とするフォームへの参照のみが渡されるように、アプリケーションを再設計しました。

今、私はこれらのタイマーについてもっと考え始めています。

私は、MDI の親を再設計して、すべてがデリゲートを使用してリッスンできるユニバーサル Tick イベントを持つことを考え始めました。

しかし、私は考え始めました: Visual Studio は既にこれを行っているのだろうか?

複数のタイマー コントロールを Windows フォーム プロジェクトに追加した場合、Visual Studio (または .NET Framework) は、常に実行されているはるかに大きなタイマーにリスナーまたは何かをプラグインするだけですか?

4

1 に答える 1

2

タイマーは実際には「実行」されません。タイマーは、オペレーティング システムのトリガーを特定の時間に起動するように設定します。

いいえ、ユニバーサル Tick イベントを作成する方がよいとは言えません。これを行った場合、1 分に 1 回発生するようにスケジュールされていることは、無視する必要がある 1 秒に 1 回のティックを取得します。複雑で壊れやすいコードをたくさん書くことになります。

幸いなことに、Windows がすべての処理を行います。基礎となるタイマーコードは、本質的にあなたが話していることを行います。リッスンするユニバーサルティックがあり、必要に応じてタイマーにイベントをディスパッチします。これを自分で実装すると、Windows が既にはるかに効果的に行っていることを複製することになります。

于 2013-04-04T16:46:42.407 に答える