回答受付が終了しました

ID非公開

2023/12/18 21:53

22回答

C#のタイマーについて質問です。

補足

UIは介してないです。 初回は即実行したいという点からthreading.timerにしましたが、system.timers.timerの方が一般的かつ、精度が高いという記事を目にしたことがあったので、迷っております。

C言語関連223閲覧xmlns="http://www.w3.org/2000/svg">25

回答(2件)

言語に関係なく、通常はWindowsのタイマーは精度が出ません。 なので精度で考えるのはあまり意味がありません。 また、C#内でも使っているフレームワーク等で”一般的”なタイマーが変わります。 なお、精度がほしければ高精度タイマー(マルチメディアタイマー)などを使う必要があります。 https://www.ipentec.com/document/csharp-create-timer-using-timesetevent https://kazzz.hatenablog.com/entry/20070404/p2

NEW! この回答はいかがでしたか? リアクションしてみよう

C#のタイマーは、以下のようにいくつも実装があって、どれを使うべきか悩みどころなんですよ MSの公式文書の解説読んでも、使い分けの解説しているブログなど読んでも、実際にテスト実装して検証してみても、未だに明確な回答まで(多分他の方も)辿り着けてない UIを介さない(WinFormsやWPFのように結果表示しない等)のなら、たぶんSystem.Threading.Timerで特に問題ないとは思いますが、処理の内容が質問文にないので何とも言えません 実際に実装テストして問題がないか確認してみましょう 1.System.Threading.Timer 2.System.Timers.Timer 3.System.Threading.PeriodicTimer 4.System.Windows.Forms.Timer 5.System.Web.UI.Timer 6.System.Windows.Threading.DispatcherTimer

何をもって一般的というかは知りませんが、ほとんど全ての場合において2のタイマーは1のタイマーで代替可能です 精度の違いなんてミリ秒単位なんで実用上問題となるケースなんてほとんど想定できないんだけどなあ