我需要在C#中使用倒计时器。有人可以帮我创建一个。要求是:
Set Timer = 5 minutes;
for (i=0;i<100;i++)
{
RunfunctionA();
if(TimeLeft==0)
RunfunctionB();
}
迭代继续运行;只是当timeleft == 0时,应该执行RunFunctionB()。
答案 0 :(得分: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;
}
}