如何强制 Windows 服务同步运行而不是异步运行

本文关键字:运行 异步 同步 何强制 Windows 服务 | 更新日期: 2023-09-27 18:32:23

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

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

如何强制 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
        }
    }
}

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