回答編集履歴
4
修正
    
        answer	
    CHANGED
    
    | 
         @@ -32,7 +32,7 @@ 
     | 
|
| 
       32 
32 
     | 
    
         
             
            これを
         
     | 
| 
       33 
33 
     | 
    
         | 
| 
       34 
34 
     | 
    
         
             
            ```C#
         
     | 
| 
       35 
     | 
    
         
            -
            long next = DateTime.Now.Ticks +  
     | 
| 
      
 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 +=  
     | 
| 
      
 44 
     | 
    
         
            +
                next += 10000;
         
     | 
| 
       45 
45 
     | 
    
         
             
            }
         
     | 
| 
       46 
46 
     | 
    
         
             
            ```
         
     | 
| 
       47 
47 
     | 
    
         | 
3
修正
    
        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
追記
    
        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
追記
    
        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 
     | 
    
         |