0

Thread.Sleep()由于 API 流量速度限制到我正在访问的第三方 API,我需要确保将在我的代码部分上实际运行。我认为最可靠的方法是同步运行进程而不是异步运行 - 我已经接受了 System.Timer、CurrentThread 等的想法。

问题:确保 Thread.Sleep() 阻止所有处理的进一步执行的最可靠方法是什么,或者一般来说,暂停 Windows 服务执行的最可靠方法是什么?如何确保进程同步运行?

4

1 回答 1

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
        }
    }
}

无论如何,我真的不明白你为什么想做这样的事情,因为通常我们都很高兴拥有异步工作的应用程序......无论如何。希望这可以帮助

于 2013-09-22T14:56:48.033 回答