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

回答編集履歴

4

修正

2018/01/18 15:51

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -32,7 +32,7 @@
32
32
  これを
33
33
 
34
34
  ```C#
35
- long next = DateTime.Now.Ticks + 10;
35
+ long next = DateTime.Now.Ticks + 10000;
36
36
  while (_thread != null)
37
37
  {
38
38
  sendMessage(constant.a, constant.b, constant.c);
@@ -41,7 +41,7 @@
41
41
  {
42
42
  long now = DateTime.Now.Ticks;
43
43
  } while (now < next);
44
- next += 10;
44
+ next += 10000;
45
45
  }
46
46
  ```
47
47
 

3

修正

2018/01/18 15:51

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
  追記
16
16
 
17
- タイマーを使わずおおざっぱな間隔でメッセージを送ればいいと理解しました。
17
+ 回答へのコメントを受けて、タイマーを使わずおおざっぱな間隔でメッセージを送ればいいと理解しました。
18
18
 
19
19
  ```C#
20
20
  while (_thread != null)

2

追記

2018/01/18 12:35

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -10,4 +10,40 @@
10
10
  [Windowsで高精度タイマを使う](https://qiita.com/tobira-code/items/ae0764634f078407662f)
11
11
 
12
12
  つまり質問で求められるタイマーの精度はかなり厳しいものと言えます。
13
- また、その頻度で処理を行おうとしても、処理が追い付かないことは十分に考えられます。
13
+ また、その頻度で処理を行おうとしても、処理が追い付かないことは十分に考えられます。
14
+
15
+ 追記
16
+
17
+ タイマーを使わずおおざっぱな間隔でメッセージを送ればいいと理解しました。
18
+
19
+ ```C#
20
+ while (_thread != null)
21
+ {
22
+ sendMessage(constant.a, constant.b, constant.c);
23
+
24
+ n = DateTime.Now.Hour * 60 * 60 * 1000 + DateTime.Now.Minute * 60 * 1000 + DateTime.Now.Second * 1000 + DateTime.Now.Millisecond;
25
+ time = n - s;
26
+ Debug.Log(time/1000);
27
+
28
+
29
+ }
30
+ ```
31
+
32
+ これを
33
+
34
+ ```C#
35
+ long next = DateTime.Now.Ticks + 10;
36
+ while (_thread != null)
37
+ {
38
+ sendMessage(constant.a, constant.b, constant.c);
39
+
40
+ do
41
+ {
42
+ long now = DateTime.Now.Ticks;
43
+ } while (now < next);
44
+ next += 10;
45
+ }
46
+ ```
47
+
48
+ こうすればいいのではないかと思います。
49
+ ただ、タイマーを使わず時間までめいっぱい働いているので当然他の処理は滞り、取りこぼしが多くなることが予想されます。

1

追記

2018/01/18 12:34

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -3,6 +3,7 @@
3
3
  [C#のSystem.Threading.Timerクラスの精度を確認する](http://takachan.hatenablog.com/entry/2017/03/30/005432)
4
4
 
5
5
  1ms の精度が欲しいということなので、これでは全然足りません。
6
+ またこれは Unity のタイマーの精度と同じです。
6
7
  難易度はぐっと上がりますが Waitable Timer ならば 0.5ms の解像度で使えることもあるそうです。
7
8
  (ただし環境依存)
8
9