2012-03-09 6 views
0

日時ピッカーによって設定された時間に基づいてタイマーのティックアラートを設定しようとしています。しかし、私はまったくダニ警報を得ることはありません。このC#タイマーはなぜ起動しないのですか? (現在および選択した時間に基づいて設定された間隔)

if (dateTimePicker1.Value >= DateTime.Now) 
    { 
     sendOrder.Interval =(int) (dateTimePicker1.Value.Ticks-DateTime.Now.Ticks); 
     sendOrder.Enabled = true; 
    } 

上記のコードでは、私はdatetimepickerからの時間差 - 現在の時間に基づいてティック時間を設定します。私は何をしていますか?

+2

'dateTimePicker1.Value.Ticksの値がどのようなものです - DateTime.Now.Ticks'? – DaveShaw

+2

アラートで呼び出される関数を指定するコードはどこですか?どのようなタイマーを使用していますか? .NETには3種類あります。 –

+0

タイマーの使い方のように何をしようとしているのかについて少し詳しい情報を表示できますか?私はこれがWindowsフォームタイマーではないと仮定していますが、小さなコードスニペットで使用するスレッドタイマーではありません。 – scptre

答えて

3

System.Timers.Timerを使用していると仮定すると、間隔はティックを指定するのに対して、間隔はミリ秒単位です。 1ミリ秒で10,000ダニがあります。

は、代わりにこれを試してみてください:

sendOrder.Interval = (int)(dateTimePicker1.Value.Ticks - DateTime.Now.Ticks)/10000; 
3

DateTime.Ticks Property

単一ティックは百ナノ秒または第二の十万を表します。ミリ秒で10,000ダニがあります。

Timer.Interval Property

時間、だからあなたのタイマーが発射されたミリ秒

で。間隔は10,000分の1だけ離れています。

代わりに刻みでいじるのは、ミリ秒単位で2つのDateTime値の差を取得するためにTimeSpan.TotalMilliseconds Propertyを使用することができます。

sendOrder.Interval = (dateTimePicker1.Value - DateTime.Now).TotalMilliseconds; 
+0

あなたは毎秒の回答を最初に変更しています。どのバージョンであるか忘れていました:) –

+0

何を言っていますか?あなたは何でもしてください。あなたの答えの1つでは、 'TotalMilliseconds'を長く適用し、私はdownvotedしました。私はdownvoteをキャンセルしません。私はこれらのタイプの答えが最初のものであることが嫌いです。 –

+0

最後の言葉を言う人になりたいと思っていますが、「long.TotalMilliseconds」はそれほど説明は必要ありません。 –

2

Ticksは、100ナノ秒の間隔です。ミリ秒で10,000ダニがあります。 Intervalはミリ秒単位です。それは明らかに誤りです。

関連する問題