質問するログイン新規登録

質問編集履歴

2

intervalをStopwatch.Frequencyの数値から算出するように変更

2018/11/13 03:04

投稿

gucha
gucha

スコア55

title CHANGED
File without changes
body CHANGED
@@ -76,7 +76,9 @@
76
76
  private void Button_Click(object sender, RoutedEventArgs e)
77
77
  {
78
78
  // 1/60秒の間隔
79
+ // コメントにて指摘されたので修正
79
- int interval = 166667;
80
+ // int interval = 166667;
81
+ float interval = 1f / 60f * Stopwatch.Frequency;
80
82
 
81
83
  while (true)
82
84
  {

1

Stopwatchを使用した指定間隔ループのコードを追加しました。

2018/11/13 03:04

投稿

gucha
gucha

スコア55

title CHANGED
File without changes
body CHANGED
@@ -62,4 +62,35 @@
62
62
  このような結果が得られました。
63
63
  大体が1/60秒の周期で処理できているのですが、ところどころで1/60秒の倍ほどの間隔になってしまいます。スキップの指定はどれも1000f/60f間隔で加算できているのでこれはコードではなく環境の問題でしょうか?
64
64
 
65
- 原因と対処法があれば教えて頂きたいです。
65
+ 原因と対処法があれば教えて頂きたいです。
66
+
67
+
68
+ ---
69
+ 追記
70
+
71
+ Stopwatchを使用したコードを考えてみました。
72
+ 上手く機能しているように思いますが間違いや注意点などがあれば教えてください。
73
+
74
+ ```C#
75
+ Stopwatch stopwatch = new Stopwatch();
76
+ private void Button_Click(object sender, RoutedEventArgs e)
77
+ {
78
+ // 1/60秒の間隔
79
+ int interval = 166667;
80
+
81
+ while (true)
82
+ {
83
+ if (stopwatch.ElapsedTicks >= interval)
84
+ {
85
+ // 指定した間隔を超えた時の処理
86
+ Console.WriteLine(stopwatch.ElapsedMilliseconds);
87
+ stopwatch.Restart();
88
+ }
89
+ else
90
+ {
91
+ // 指定した間隔未満だった時の処理 Stopwatchを再開
92
+ stopwatch.Start();
93
+ }
94
+ }
95
+ }
96
+ ```