0

我使用 API 制作了一个应用程序,允许我创建自己的事件循环。我正在尝试使用 .NET 表单来转换此应用程序以获得相同的效果。它基本上看起来像这样:

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

是否可以访问表单的主循环?

或者是否存在每帧触发的事件?有了这个,例如,我可以计算每秒的帧数。此事件不必由 Form 调用,甚至可能由 System 调用,因此您甚至可以将它们与服务、应用程序和 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 回答