我想在C#方法中添加一个计时器。当此方法执行超过500秒。该方法将抛出异常。像这样:
if(sw.ElapsedMilliseconds > timeout)
{
break;
}
你有比StopWatch更好的主意吗?除了线程。 :)
非常感谢!
答案 0 :(得分:2)
您可以使用Task with CancellationTokenSource
void LongMethod(CancellationToken token)
{
for (int i=0; i<51; ++i)
{
token.ThrowIfCancellationRequested();
Thread.Sleep(1000); // some sub operation
}
}
void Run()
{
var source = new CancellationTokenSource(50000); // 50 sec delay
var task = new Task(() => LongMethod(source.Token), source.Token);
task.Wait();
}