回答編集履歴

4

修正

2018/01/18 15:51

投稿

Zuishin
Zuishin

スコア28660

test CHANGED
@@ -66,7 +66,7 @@
66
66
 
67
67
  ```C#
68
68
 
69
- long next = DateTime.Now.Ticks + 10;
69
+ long next = DateTime.Now.Ticks + 10000;
70
70
 
71
71
  while (_thread != null)
72
72
 
@@ -84,7 +84,7 @@
84
84
 
85
85
  } while (now < next);
86
86
 
87
- next += 10;
87
+ next += 10000;
88
88
 
89
89
  }
90
90
 

3

修正

2018/01/18 15:51

投稿

Zuishin
Zuishin

スコア28660

test CHANGED
@@ -30,7 +30,7 @@
30
30
 
31
31
 
32
32
 
33
- タイマーを使わずおおざっぱな間隔でメッセージを送ればいいと理解しました。
33
+ 回答へのコメントを受けて、タイマーを使わずおおざっぱな間隔でメッセージを送ればいいと理解しました。
34
34
 
35
35
 
36
36
 

2

追記

2018/01/18 12:35

投稿

Zuishin
Zuishin

スコア28660

test CHANGED
@@ -23,3 +23,75 @@
23
23
  つまり質問で求められるタイマーの精度はかなり厳しいものと言えます。
24
24
 
25
25
  また、その頻度で処理を行おうとしても、処理が追い付かないことは十分に考えられます。
26
+
27
+
28
+
29
+ 追記
30
+
31
+
32
+
33
+ タイマーを使わずおおざっぱな間隔でメッセージを送ればいいと理解しました。
34
+
35
+
36
+
37
+ ```C#
38
+
39
+ while (_thread != null)
40
+
41
+ {
42
+
43
+ sendMessage(constant.a, constant.b, constant.c);
44
+
45
+
46
+
47
+ n = DateTime.Now.Hour * 60 * 60 * 1000 + DateTime.Now.Minute * 60 * 1000 + DateTime.Now.Second * 1000 + DateTime.Now.Millisecond;
48
+
49
+ time = n - s;
50
+
51
+ Debug.Log(time/1000);
52
+
53
+
54
+
55
+
56
+
57
+ }
58
+
59
+ ```
60
+
61
+
62
+
63
+ これを
64
+
65
+
66
+
67
+ ```C#
68
+
69
+ long next = DateTime.Now.Ticks + 10;
70
+
71
+ while (_thread != null)
72
+
73
+ {
74
+
75
+ sendMessage(constant.a, constant.b, constant.c);
76
+
77
+
78
+
79
+ do
80
+
81
+ {
82
+
83
+ long now = DateTime.Now.Ticks;
84
+
85
+ } while (now < next);
86
+
87
+ next += 10;
88
+
89
+ }
90
+
91
+ ```
92
+
93
+
94
+
95
+ こうすればいいのではないかと思います。
96
+
97
+ ただ、タイマーを使わず時間までめいっぱい働いているので当然他の処理は滞り、取りこぼしが多くなることが予想されます。

1

追記

2018/01/18 12:34

投稿

Zuishin
Zuishin

スコア28660

test CHANGED
@@ -7,6 +7,8 @@
7
7
 
8
8
 
9
9
  1ms の精度が欲しいということなので、これでは全然足りません。
10
+
11
+ またこれは Unity のタイマーの精度と同じです。
10
12
 
11
13
  難易度はぐっと上がりますが Waitable Timer ならば 0.5ms の解像度で使えることもあるそうです。
12
14