Esempio n. 1
0
        private static void Main(string[] args)
        {
            Console.WriteLine("console progress bar test..");

            // 单线程单任务
            var pBar = new ConsoleProgressBar("s1").Show();

            for (int i = 0; i <= 100; i++)
            {
                Thread.Sleep(25);
                pBar.UpdateProgress(i);
            }

            // 单线程多个任务
            var pBars = new ConsoleProgressBar[9];

            for (int i = 0; i < pBars.Length; i++)
            {
                pBars[i] = new ConsoleProgressBar($"task{i + 1}").Show();
            }

            for (int i = 0; i <= 100; i++)
            {
                Thread.Sleep(25);

                for (int j = 0; j < pBars.Length; j++)
                {
                    pBars[j].UpdateProgress(i);
                }
            }

            // 多线程多任务
            // 有问题 orz
            for (int i = 0; i < 9; i++)
            {
                var thread = new Thread(new ThreadStart(delegate()
                {
                    var threadName = Thread.CurrentThread.Name;
                    var pBar       = new ConsoleProgressBar(threadName).Show();

                    for (int i = 0; i <= 100; i++)
                    {
                        Thread.Sleep(25);
                        pBar.UpdateProgress(i);
                    }
                }));

                thread.Name = $"Thread{i + 1}";
                thread.Start();
            }

            // wait for exit
            Console.ReadKey();
        }