ふらっとC#,C♯,C#(初心者用) Part75
■ このスレッドは過去ログ倉庫に格納されています
0333デフォルトの名無しさん
2011/06/11(土) 18:22:55.39タイマーイベントで処理して、またタイマーイベントで処理・・・
って繰り返せばそりゃ誤差は蓄積する。
正しいのはスレッドをつくって常に時計を監視させること。
その間Sleep(1)で1ms程度のウエイトでループさせる。
このループは1msを正確に寝るためにやるんじゃなくて、ビジーループにならないようにするためにやる。
じゃないとCPUが100%に張り付いてしまうからね。
そしてそのループで毎回時計をみる。
時間になってたらならす。そしてまたループの先頭にもどる。
これでよい。
参照すべき時計だが、>>234,236の実験にあるように確かに1ms以下の誤差がある
(どこから10msくらい遅れてるって話がでてくるんだ?)
この1msの誤差は上記の方法でやれば蓄積しない。
音を鳴らすタイミングが、本来のタイミングから1ms程度前後するだけ。
そして、人間には1ms以下の誤差なんかまったく分からない。
リンク先の話は、多分映像が30フレームなんだろう。その場合最大で33ms遅れるはず。
これの平均が22msなんじゃないのかな。
音声の場合はもっと1フレームが短い時間なので、よりズレが小さいという話だろう。
■ このスレッドは過去ログ倉庫に格納されています