如果对db的写入失败,我需要向Web请求添加重试逻辑。我想在退出前延迟500毫秒再试两次。在重试期间不需要阻止用户响应。我的问题是,一旦做出回应,计时器是否仍然存活以完成重试,还是在响应后立即被杀?
答案 0 :(得分:0)
为什么不使用async / await。它可能会让事情变得更容易:
public SomeResult HandleWebRequest()
{
StartThing(); //not awaited - fire-and-forget
//return a response
}
public async void StartThing()
{
//await Task.Yield(); //return control to call site and finish asynchronously
for(var numTries = 0; numTries < 3; numTries++)
{
if(trySomethingThatMightNotWork)break;
await Task.Delay(5000);
}
}