C# 如何确保两个请求在不同的时间发送?
我需要向服务器发送许多请求,但我必须确保它们在不同的时间发送,否则我将被禁止进入服务器,这就是我要做的:C# 如何确保两个请求在不同的时间发送?,c#,thread-safety,locking,C#,Thread Safety,Locking,我需要向服务器发送许多请求,但我必须确保它们在不同的时间发送,否则我将被禁止进入服务器,这就是我要做的: lock(_lock) { SendRequest(); Sleep(100); } 但问题是,线程总是会延迟0.1秒,有没有更有效的方法? 另外,服务器没有响应 增加: 我想出了另一种方法,但代码有点复杂 autoResetEvent.WaitOne(); SendRequest(); new Thread(() => { Thread.Slee
lock(_lock)
{
SendRequest();
Sleep(100);
}
但问题是,线程总是会延迟0.1秒,有没有更有效的方法? 另外,服务器没有响应
增加:
我想出了另一种方法,但代码有点复杂
autoResetEvent.WaitOne();
SendRequest();
new Thread(() =>
{
Thread.Sleep(100);
autoResetEvent.Set();
}).Start();
如果你必须节流,你必须节流。如果不想阻止线程,可以尝试异步运行,但如果不想阻止,则需要一直异步运行(使用
wait-SendRequestAsync();wait-Task.Delay(100);
。如果使用Task.Run,则只需使用另一个(Threadpool-)Thread.Tbh,我认为这不会有多大帮助。服务器是你的瓶颈,你已经在使用一个线程来阻止你的UI,对吗?@Fildor如果你是对的,UI线程在我的代码中不会被阻止,但是其他线程需要在SendRequest()之后做一些不太重要的工作,因此等待越少越好。您熟悉async/await吗?