试图让控制台应用程序以每秒20帧的速度运行

时间:2017-06-21 13:01:06

标签: c#

我正在尝试创建一个计时机制,以便我正在处理的控制台应用程序以大约每秒10帧的速度运行。当我运行这段代码时,它不是一秒钟的平滑20帧,而是经常结结并且冻结。由于它依赖于DateTime.Now.Millisecond函数,我在调试时遇到了麻烦,因此每当我在代码中插入一个中断时,它就会混乱应用程序的时间。

do
{
    frameTimer = DateTime.Now.Millisecond;

    if (firstLoop == true)
    {
        timeTillNextFrame = frameTimer + 100;

        firstLoop = false;
    }

    if (timeTillNextFrame < DateTime.Now.Millisecond && DateTime.Now.Millisecond < 901)
    {
        Console.Clear();

        grid.removeFromGrid(ball.xPos, ball.yPos);
        ball.newPos(gridSizeX, gridSizeY, grid.gridArray);
        grid.addToGrid(ball.xPos, ball.yPos, ball.symbol);

        grid.gridDraw(gridSizeX, gridSizeY);

        timeTillNextFrame = DateTime.Now.Millisecond + 50;

        if (timeTillNextFrame >= 1000)
        {
            timeTillNextFrame -= 1000;
        }

    }

1 个答案:

答案 0 :(得分:0)

您不希望DateTime.Now.Millisecond,您需要总毫秒数:

private static readonly DateTime Epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);

var totalMilliseconds = DateTime.Now.ToUniversalTime().Subtract(Epoch).TotalMilliseconds