2011-01-10 1 views
1

私は5秒ごとにイベントを発生させるためにtimers.timerを使用しています。私が気づいたのは、しばらくしてから6秒ごとに発砲していることです。パラレルに走っている他の多くのスレッドがあります。 timers.timerイベントは、スレッドプールを使用して生成されます。ドリフトは、パラレルを実行する他のスレッドのためです。あれは正しいですか?私のアプリはwpfアプリです。ディスパッチャータイマーはUIに影響する可能性があるため、使用できません。timers.timerは正確に起動しない

スレッドに関係なく、UIに影響を与えずに、5秒ごとにタイマーイベントを発生させたいと考えています。 solutios/bestアプローチは何ですか?

+1

を見ていますか? –

+0

ああ、あなたは本当に多くの答えを出すために人々を誘惑するためにいくつかの答えを受け入れる必要があります...誰も彼らの努力のためにいくつかの信用を望んでいます。だからこそこのサイトが存在するのです。そうではありません。Ask.com –

+0

すみません...私は答えに印をつけませんでした。私はすぐにそれをやります – user209293

答えて

1

なぜこれが起こっているのか分かりませんが、timer.timerはその目的のためのものではありません。異なるスレッド上でタイマーを同時に実行する場合は、System.Threading.Timerの使用を検討してください。

System.Threading.Timerは、コールバックメソッドを使用し、スレッドプールスレッドによって処理されるシンプルで軽量なタイマーです。 Windowsフォームでの使用はお勧めしません。その理由は、ユーザーインターフェイスのスレッドでコールバックが発生しないためです。 System.Windows.Forms.Timerは、Windowsフォームでの使用に適しています。サーバーベースのタイマー機能の場合は、イベントを発生させ、追加の機能を持つSystem.Timers.Timerの使用を検討することもできます。 は、他の回答はそんなに悪くなかった、あなたはわずか6つの答えを受け入れたのStackOverflowに求めてきました21個の質問のうち、

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

+0

System.Threading.Timerは、サーバー型プロジェクトのためのより良いソリューションですが、同じ問題があります。それはまだスレッドプールのスレッド上にあるため、正確に発射することはできません。 – jercra

+0

その比較のために、私はあなたに見てみたいですhttp://msdn.microsoft.com/en-us/magazine/cc164015.aspx –

関連する問題