0

独自のイベントループを作成できるAPIを使用してアプリを作成しました。このアプリケーションを変換するために、.NETフォームで同じ効果を得ようとしています。基本的には次のようになりました。

int main()
{
    InitializeComponents();
    While(!quitting()){
        updateComponents();
        renderComponents();
    }
    terminateComponents();
    return 0;
}

フォームのメインループにアクセスすることは可能ですか?

または、フレームごとにトリガーされるイベントはありますか?これにより、たとえば、1秒あたりのフレーム数を計算できます。このイベントは、フォームから呼び出す必要はありませんが、システムから呼び出すこともできるため、サービス、アプリケーション、およびWebで使用することもできます。

ありがとう

4

1 に答える 1

0

プログラムで何も起こらないときは何もしないので、アイドル状態のアプリケーションでは実際のフレームはありません。

Application.Idleそしてそれがイベントがある理由です。これは、アプリケーションが実行しなければならないことをすべて実行し終えるたびに発生します。

そんな感じ:

//somewhere in the initialization function:
Application.Idle += OnIdle;

void OnIdle(object sender, EventArgs e)
{
    updateComponents();
    renderComponents();
}

注:ドキュメントによると、将来的には切り離す必要があります。

//finalization function
Application.Idle -= OnIdle;
于 2013-01-09T21:01:56.030 に答える