Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 计时器应用程序运行不正常_C#_Timer - Fatal编程技术网

C# 计时器应用程序运行不正常

C# 计时器应用程序运行不正常,c#,timer,C#,Timer,我正在编写一个非常简单的c#应用程序,其中程序计算15秒,并在15秒过后立即输出“15”。尽管该程序在最初的几次试验中运行良好,但它开始冻结。有人知道为什么吗?我该如何改进它 public void timer() { time.Text = "restart"; int i = 0; DateTime st1 = DateTime.Now; String time1 = st1.S

我正在编写一个非常简单的c#应用程序,其中程序计算15秒,并在15秒过后立即输出“15”。尽管该程序在最初的几次试验中运行良好,但它开始冻结。有人知道为什么吗?我该如何改进它

 public void timer()
        {
            time.Text = "restart";
            int i = 0;
            DateTime st1 = DateTime.Now;
            String time1 = st1.Second.ToString();
            int timef = Convert.ToInt32(time1);
            int timef2;

            while (i < 15)
            {

                DateTime st2 = DateTime.Now;
                String time2 = st2.Second.ToString();
                timef2 = Convert.ToInt32(time2);
                i = timef2 - timef;

            }

            time.Text = i.ToString();
            i = 0;
        }
公共无效计时器()
{
time.Text=“重新启动”;
int i=0;
DateTime st1=DateTime.Now;
字符串time1=st1.Second.ToString();
int-timef=Convert.ToInt32(time1);
int TIME2;
而(i<15)
{
DateTime st2=DateTime.Now;
字符串time2=st2.Second.ToString();
timef2=转换为32(time2);
i=时间2-时间;
}
time.Text=i.ToString();
i=0;
}

如果你知道精确的15秒,那么让它变得更简单怎么样

Thread.Sleep(15000); 
Console.WriteLine("15");
或者使用bulit定时器:-

static void Main(string[] args)
        {
            System.Timers.Timer timer = new System.Timers.Timer(15000);
            timer.Elapsed += new System.Timers.ElapsedEventHandler(T_Elapsed);
            timer.Start();
            var i = Console.ReadLine();

        }

        static void T_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            Console.WriteLine("15");
            var T = (Timer)sender;
            T.Stop;

        }

如果希望应用程序在特定的
时间之后执行某些操作,则需要使用
计时器

System.Timers.Timer timer = new System.Timers.Timer();
timer.Interval = 15 * 1000;
timer.Elapsed += timer_Elapsed;
timer.Start();
int timerCount=0;

void timer_Elapsed(object sender, EventArgs e)
{
 timerCount++;
 int timeElapsed = timerCount * 15;
}

在您的情况下,您可以只使用System.Diagnostics命名空间中的Stopwatch-类:

    public static void Count()
    {            
        Stopwatch s = new Stopwatch();
        int i = 0;
        s.Start();

        while (true)
        {
            if (s.ElapsedMilliseconds < i * 1000) { Thread.Sleep(10); continue; }
            i += 15; Console.Write(i + "  "); // or change i to 15 if you want the output to be '15' every time
        }
    }
公共静态无效计数()
{            
秒表s=新秒表();
int i=0;
s、 Start();
while(true)
{
如果(s.elapsedmillesons
当程序不工作时,它到底在做什么?
Thread.Sleep(15000)更容易为什么不使用内置计时器类?它不是15个步骤。它检查日期和时间,并用它来告诉时间经过。所以我想测试这个应用程序是否在15秒的准确时间输出15。我想在我的实际应用程序中使用这个逻辑,我正在用这个简单的方法测试它。当它不工作时,计算机会冻结,什么也不做。MairajAhmad和@MickyDuncan非常感谢您的帮助!!现在我正试图在屏幕上显示经过的时间?我该怎么做?谢谢您可以创建一个变量,并在计时器经过时在其中递增。当你想显示经过的时间时,把这个变量乘以15。时间是以秒为单位的。