C#でメインループってどうやって作るの?
Timer?それともメッセージループあるの?
while(form.Created)
{
更新();
描画();
Application.DoEvents();
}
System.Diagnostics のStopwatchクラス。どっかの十分精度の出るやつのラッパーらしい。
staticメンバで、インスタンス生成+一括初期化のStartNew()で一行で初期化できるし、
(double)インスタンス.ElapsedTicks / Stopwatch.Frequencyで、↑してからの経過時間(秒)が分かる。
ループを直接書かずにこんな感じでApplication.Idleイベントを使う方法もあるみたい
Application.Idle += (sender, e) => {
while (!NativeMethods.PeekMessage(out msg, IntPtr.Zero, 0, 0, 0))//DllImportしてくる
描画や更新やウェイト();
}
Application.Run(form);
XNAなんかだとこっちになってるからこっちの方がいいのかも
>>31 Application.Idleイベント内でウィンドウメッセージの有無を
P/InvokeのPeekMessageで判断しつつメインループ呼び出し、とか。
Application.DoEventsメソッドはGC引き起こすからってSDKサンプルは
この実装に変更されたんだけど、.NET2.0以降のWinFormsは
DoEventsが改善されてどっちでもよくなった気がする。