C#运行具有时间间隔的方法的一部分

时间:2013-12-10 11:23:16

标签: c#

我正在为网页的点击链接制作C#应用程序。但我想用时间间隔来做。我的意思是链接必须在接下来的一秒钟后点击,就像那样。我做了它但它没有时间间隔点击所有链接。我想只获取所有链接一次并单击间隔。如果我使用计时器类,它将在每次经过时获得链接。 这是我的C#代码。我尝试了不同的方法,但没有一个是成功的。你可以帮帮我吗?

public void linkinvo()
{
    int clickedobj = 0;
    HtmlElementCollection elems = webBrowser1.Document.GetElementsByTagName("A");
    for (int i = 0; i < elems.Count; i++)
    {
        String inhref = elems[i].GetAttribute("href");
        String innerdoc = elems[i].InnerText;

        textBox2.AppendText(inhref + " -->" + innerdoc + Environment.NewLine);
        Thread.Sleep(1000); //i know this is not work 
        /* I want to run if part of this method with 1 second delay but not all the script */     

        if (innerdoc == "Like")
        {
            elems[i].InvokeMember("Click");
            clickedobj = clickedobj + 1;
        }
    }
    label3.Text = clickedobj.ToString();

2 个答案:

答案 0 :(得分:1)

问题:您不是iterating执行link
解决方案:

第1步:您需要执行Array of links 第2步:订阅Timer Tick活动 第3步:Interval的{​​{1}}属性设置为1000毫秒,以便每1秒钟提升一次。 第4步:Timer中只需从Tick Event Handler调用next link即可。并增加LinkArray变量。
第5步:重复第4步,直到linkExecutionCount到达linkExecutionCount Length步骤6:,如果LinkArray等于linkExecutionCount长度LinkArray计时器,则。

试试这个:我提供了关于如何处理多个链接的示例代码

Stop

答案 1 :(得分:0)

我多次处理类似的问题 我建议使用计时器,你可以随时停止它,所以它不会循环 在你停止之后,你需要在1秒后运行的部分应该在 (比方说)定时器1,如果有另一个第3链路,则从定时器1启动定时器2 它们立即在下一行,停止计时器1,因此计时器1将处理第一个链接点击 然后它将启动计时器2,并在启动计时器2后,计时器1将停止

根据我在胜利表格中控制行动的经验,我强烈推荐 使用浏览器控件