首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# WaitFor或在下一行前暂停X秒

C# WaitFor或在下一行前暂停X秒
EN

Stack Overflow用户
提问于 2012-09-12 17:30:11
回答 3查看 11.4K关注 0票数 4

我正在尝试找出做以下事情最好的方法是什么?我有一个使用httpwebrequest的控制台应用程序。在我的应用程序的某些部分,我想这样做:

代码语言:javascript
复制
  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在一个函数中,并在我需要的时候使用它?

谢谢!

编辑:这个程序是隐形的,所以我需要一个不加载圆形鼠标的解决方案:)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-12 17:42:52

This question提供了一种在定义的范围内生成随机数的方法,您可以按原样将其包装在另一种方法中,以暂停随机的秒数。

代码可能如下所示:

代码语言:javascript
复制
// 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()

票数 4
EN

Stack Overflow用户

发布于 2012-09-12 17:31:22

试一试

代码语言:javascript
复制
Random random = new Random();
int timeDelay = random.Next(8, 16);

Thread.Sleep(timeDelay * 1000); //time in milliseconds
票数 6
EN

Stack Overflow用户

发布于 2012-09-12 17:31:42

使用Thread.Sleep(miliseconds)在所需的时间内停止执行。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12385110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档