0

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

Set Timer = 5 minutes;

for (i=0;i<100;i++)
{  
     RunfunctionA();

    if(TimeLeft==0)
        RunfunctionB();
}

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

4

1 回答 1

1

这听起来好像你只需要一个简单的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;
    }
}
于 2013-09-07T22:28:30.377 回答