例如要输出以下信息:剩余时间:[n]秒其中[n]被实际时间替换,每隔1秒变一次,其他部分不变不能使用Console.Clear()方法全部清空再重新输出,因为在这个显示之前可能还有其他未知的信息。

解决方案 »

  1.   

        static void Main()
        {
            const int dueInSeconds = 30;
            DateTime dueTime = DateTime.Now + TimeSpan.FromSeconds(dueInSeconds);
            int top = Console.CursorTop, left = Console.CursorLeft;        System.Threading.ThreadPool.QueueUserWorkItem(delegate(object o)
            {
                while (true)
                {
                    TimeSpan remaining = dueTime - DateTime.Now;
                    if (remaining.TotalSeconds <= 0) return;                Console.SetCursorPosition(left, top);
                    Console.Write(string.Format("Remaining seconds: {0,5}", (int)remaining.TotalSeconds));
                    System.Threading.Thread.Sleep(1000);
                }
            });
            Console.ReadLine();
        }
      

  2.   

    楼上的基本能解决问题,有个小问题,如果不是固定宽度(删除对齐5)
    Console.Write(string.Format("Remaining seconds: {0}", (int)remaining.TotalSeconds)); 
    当时间从10秒到9秒时,由于宽度变小,导致最后1位仍保持之前的数据(这里会显示成90,而不是9)
    有什么解决办法
      

  3.   

    http://topic.csdn.net/u/20090224/09/128c953f-10d7-49dd-ade6-086d962eb325.html
      

  4.   

    using System;
    using System.Collections.Generic;
    using System.Text;namespace application1
    {
        class TimeTest
        {
            static void Main()
            {
                DateTime topTime = DateTime.Now;
                int  secondTime = 12;
                int row = Console.CursorTop;
                int column = Console.CursorLeft;
                Console.WriteLine(secondTime);
                while (secondTime > 0)
                {
                    TimeSpan xx = (DateTime.Now - topTime);
                    if (xx.TotalMilliseconds == 1000)
                    {
                        topTime = DateTime.Now;
                        secondTime--;
                        Console.SetCursorPosition(column, row);
                        if (secondTime < 10)
                        {
                            Console.WriteLine("0"+secondTime.ToString());
                            Console.WriteLine("" + secondTime.ToString());
                            Console.WriteLine(" " + secondTime.ToString());
                        }
                        else
                            Console.WriteLine(secondTime);
                    }
                }
                Console.ReadLine();        }
        }
    }
      

  5.   

    System.Threading.Thread.Sleep(1000); 弱弱的问下 
    为什么挂起线程1秒 就不会出现那种闪烁的情况?????
    System.Threading.Thread.Sleep(改成越小);
    又有变化 是怎么回事?? 
      

  6.   

    Console.WriteLine(string.Format("Remaining seconds: {00}", (int)remaining.TotalSeconds)); 
      

  7.   

       for (int i = 60; i >=0; i--)
                {                Console.Write(i);
                    System.Threading.Thread.Sleep(1000);
                    Console.Clear();
                
                }