05
2024
03

【C#】以执行频率打印进度,即文字进度条

难点在最后输出100%问题
经过多次实践,终于找出解决:

   

/// <summary>

/// 以执行频率打印进度

/// </summary>

/// <param name="Max">最大值</param>

/// <param name="Y">执行频率</param>

public static void Do(Action work, double Max, double Y = 0.01)

{

    int current = 0;

    for (int i = 0; i < Max; i++)

    {

        //百分之一时反馈

        if ((int)(current++ % (Max * Y)) == 0)

            Console.WriteLine($"已经完成{current}个,进度{Math.Floor(current / (Max * 0.01))}%。");

        //工作代码

        work();

    }

    //补充100%的输出

    if ((int)((current - 1) % (Max * Y)) != 0)

    {

        Console.WriteLine($"已经完成{current}个,进度{Math.Floor(current / (Max * 0.01))}%。");

    }

}

 

public static void work()

{

    //工作代码

    Thread.Sleep(100);

}

   




执行代码:


//以执行频率打印进度

Class6.Do(Class6.work, 99, 0.3);

   




最后显示结果:


已经完成1个,进度1%。

已经完成31个,进度31%。

已经完成61个,进度61%。

已经完成91个,进度91%。

已经完成99个,进度100%

   



« 上一篇下一篇 »

相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。