我想提出这个问题,但也许从不同的角度改写它。
出于反欺诈目的,我想在一定数量的错误登录尝试后阻止访问者。此时我有一个管理器类,它包装了登录的实际函数调用。如果访问者被阻止,则管理器会抛出异常,因此永远不会调用实际的登录方法。到现在为止还挺好。
我现在想将异常抛出部分更改为Thread.Sleep
一种东西。然而,这不是一个选项,因为这将阻止对服务器的其他请求。对于这种情况,是否有一个简单的替代方案,可能使用一些async
等待命令或使用F#
?
当前代码:
class Manager {
void Execute(Action action) {
if(user.IsBlocked)
throw new BlockedException();
else
action();
}
}
首选代码:
class Manager {
void Execute(Action action) {
if(user.IsBlocked)
//Wait for xxx minutes
action();
}
}