由于我对第三方API的API流量速度限制,我需要确保Thread.Sleep()
实际上会在我的代码段上运行。我认为最可靠的方法是同步而不是异步地运行进程 - 我已经接受了System.Timer,CurrentThread等的想法。
问题:什么是确保Thread.Sleep()阻止进一步执行所有处理的最可靠方法,或者一般来说,什么是最可靠的暂停方式执行Windows服务?如何确保进程同步运行?
答案 0 :(得分:1)
任何用户对您的asp.net应用程序的每个请求都将在其自己的线程中运行。要同步该流量,您可以创建单个对象并构建一个使用锁的方法。 Lock实际上会锁定所有线程,直到当前线程结束。
因此,如果您发现需要设置超时,请构建锁定块并在内部设置超时。 现在所有线程都必须等待......
像这样的东西
public class ThreadLock
{
private static readonly object myLock;
public void LockTimeout()
{
// --> first thread will trigger the following code.
// All other threads will wait
// <-- HERE
// until the first went through
lock (myLock)
{
//... do some timeout work
}
}
}
无论如何,我真的不明白为什么你想要做这样的事情,因为通常我们都很高兴有异步工作的应用程序......反正。希望这有帮助