我正在尝试找出做以下事情最好的方法是什么?我有一个使用httpwebrequest的控制台应用程序。在我的应用程序的某些部分,我想这样做:
agent.GetURL("http://site.com/etc.../");
Wait for 8-16 Seconds<-Should be random
Agent.GetURL("http://site.com/etc.../");
Wait for 4-6 Seconds etc...请求是时间敏感的,所以每个请求的计算机时间应该不同,我不能只是请求,等待它完成,然后再次请求。我读过很多关于定时器的书,thread.sleep。我担心我没有停止或停顿的经验,我不想在将来遇到问题。所以,如果你能建议我,对于这种代码,最好的方法是什么?
有没有可能计时器/thread.sleep在一个函数中,并在我需要的时候使用它?
谢谢!
编辑:这个程序是隐形的,所以我需要一个不加载圆形鼠标的解决方案:)
发布于 2012-09-12 17:42:52
This question提供了一种在定义的范围内生成随机数的方法,您可以按原样将其包装在另一种方法中,以暂停随机的秒数。
代码可能如下所示:
// Method from the linked answer, copy-pasted here for completeness
// added the relevant fields because the original code is an override
public Int32 GetNewRandomNumber(Int32 minValue, Int32 maxValue)
{
RNGCryptoServiceProvider _rng = new RNGCryptoServiceProvider();
byte[] _uInt32Buffer = new byte[4];
if (minValue > maxValue)
throw new ArgumentOutOfRangeException("minValue");
if (minValue == maxValue) return minValue;
Int64 diff = maxValue - minValue;
while (true)
{
_rng.GetBytes(_uint32Buffer);
UInt32 rand = BitConverter.ToUInt32(_uint32Buffer, 0);
Int64 max = (1 + (Int64)UInt32.MaxValue);
Int64 remainder = max % diff;
if (rand < max - remainder)
{
return (Int32)(minValue + (rand % diff));
}
}
}
public void RandomWait(int minWait, int maxWait)
{
// Thread.Sleep() wants a number of milliseconds to wait
// We're going, as an example, to wait between 8 and 16 seconds
System.Threading.Thread.Sleep(GetNewRandomNumber(8, 16) * 1000);
}然后,您只需在需要时调用RandomWait()。
发布于 2012-09-12 17:31:22
试一试
Random random = new Random();
int timeDelay = random.Next(8, 16);
Thread.Sleep(timeDelay * 1000); //time in milliseconds发布于 2012-09-12 17:31:42
使用Thread.Sleep(miliseconds)在所需的时间内停止执行。
https://stackoverflow.com/questions/12385110
复制相似问题