3

System.Threading.Timerオブジェクトを使用し、その期間を設定します。

// period of 1 second
var timer = new Timer(CallBack, null, 0, 1000);

...

今、タイマーの期間を取得したいのですが、どうすればよいですか?

4

4 に答える 4

4

これを行う方法はサポートされていません。次の 2 つのオプションがあります。

1) クラスを使用するのが最善System.Timers.Timerです。より柔軟で、マルチスレッドで使用する場合に安全に使用できるからです。System.Windows.Forms.Timerタイマー、System.Timers.Timerおよびと の比較について詳しく知りたい場合は、この件に関する MSDN の記事System.Threading.Timerをお読みください。

2) リフレクションを使用して、期間値を保持するプライベート メンバーにアクセスします。これを行う方法に関する優れた記事がたくさんあり、ILSpyを使用して、どのフィールドを読む必要があるかを確認できます。(.NET 4.0 では timer.m_timer.m_timer.m_period です。他のバージョンでも同じかもしれません)

于 2012-11-04T20:26:03.303 に答える
2

あなたはそうしない。つまりSystem.Threading.Timer、期間 (または私が知る限り他のメンバー) の取得をサポートしていません。期間を大まかに決定する唯一の方法は、自分で時間を計ることです。

于 2012-11-04T20:17:33.810 に答える
1

を使用することはできませんが、またはSystem.Threading.Timerを使用すると使用できます。そこに確認できるプロパティがあります。このリンクをさらに参照して、この 2 つの実装の違いを確認できます。System.Timers.TimerSystem.Windows.Forms.TimerTimer.Interval

于 2012-11-04T20:25:45.210 に答える
1

MSDNによると、あなたが求めるものを達成する方法はありません。

于 2012-11-04T20:18:57.600 に答える