C# 中的倒数计时器

本文关键字:计时器 倒数 | 更新日期: 2023-09-27 18:30:29

我需要C#中的倒数计时器。有人可以帮我创建一个吗?要求是:

Set Timer = 5 minutes;
for (i=0;i<100;i++)
{  
     RunfunctionA();
    if(TimeLeft==0)
        RunfunctionB();
}

迭代继续运行;只是当 timeleft==0 时,应该执行 RunFunctionB()。

C# 中的倒数计时器

听起来好像你只需要一个简单的StopWatch

var sw = new StopWatch();
var maxTime = TimeSpan.FromMinutes(5);
sw.Start();
for (int i=0; i < 100; i++)
{  
    RunfunctionA();
    if(sw.Elapsed <= maxTime)
    {
        RunfunctionB();
        break;
    }
}

如果您想按评论倒计时,我只会计算剩余时间:

TimeSpan remaining = maxTime - sw.Elapsed;

编辑:根据您的评论,您想停止在RunFunctionA中启动的进程,如果时间过去了,您可以尝试这种方法:

private Stopwatch ProcTimer = new Stopwatch();
private TimeSpan MaxTime = TimeSpan.FromMinutes(5);
private TimeSpan Remaining { get { return MaxTime - ProcTimer.Elapsed; } }
private void RunfunctionA()
{
    using (var proc = new System.Diagnostics.Process())
    {
        // initialization
        proc.Start();
        proc.WaitForExit((int)Remaining.TotalMilliseconds);
        if (proc.HasExited)
            ;// ...
        else
            proc.Kill();
    }
}

这是循环:

ProcTimer.Restart();
for (int i = 0; i < 100; i++)
{
    RunfunctionA();
    if (Remaining <= TimeSpan.Zero)
    {
        RunfunctionB();
        break;
    }
}