Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何确保两个请求在不同的时间发送?_C#_Thread Safety_Locking - Fatal编程技术网

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吗?