Thread.Sleep()
由于 API 流量速度限制到我正在访问的第三方 API,我需要确保将在我的代码部分上实际运行。我认为最可靠的方法是同步运行进程而不是异步运行 - 我已经接受了 System.Timer、CurrentThread 等的想法。
问题:确保 Thread.Sleep() 阻止所有处理的进一步执行的最可靠方法是什么,或者一般来说,暂停 Windows 服务执行的最可靠方法是什么?如何确保进程同步运行?
Thread.Sleep()
由于 API 流量速度限制到我正在访问的第三方 API,我需要确保将在我的代码部分上实际运行。我认为最可靠的方法是同步运行进程而不是异步运行 - 我已经接受了 System.Timer、CurrentThread 等的想法。
问题:确保 Thread.Sleep() 阻止所有处理的进一步执行的最可靠方法是什么,或者一般来说,暂停 Windows 服务执行的最可靠方法是什么?如何确保进程同步运行?
任何用户对您的 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
}
}
}
无论如何,我真的不明白你为什么想做这样的事情,因为通常我们都很高兴拥有异步工作的应用程序......无论如何。希望这可以帮助