如何强制 Windows 服务同步运行而不是异步运行
本文关键字:运行 异步 同步 何强制 Windows 服务 | 更新日期: 2023-09-27 18:32:23
我需要确保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
}
}
}
无论如何,我真的不明白你为什么要做这样的事情,因为通常我们都很高兴拥有异步工作的应用程序......无论如何。希望这有帮助