-1

这有点难以解释,但我希望这个例子能把它弄清楚。

假设我有一些函数调用可见:

public bool Visible(/* Some page element */)
    {
        // Checks if something on a webpage is visible. Returns a "true" is yes, and "false" if not
    }

是否有可能等待这个函数返回true?到目前为止,我写的内容如下所示:

    public void WaitUntil(/*function returning bool*/ isTrue)
    {
        for (int second = 0; ; second++)
        {
            if (second >= 12)
            {
                /* Thow exception */
            }
            else
            {
                if (isTrue /*calls the isTrue function with given parameters*/)
                {
                    return;
                }
            }
        }
    }

这样这两种方法可以一起使用,例如:

WaitUntil(Visible(/* Some page element */));

等到页面元素可见......这可能吗?

4

1 回答 1

2

这是如何做到的(尽管您应该考虑使用事件,因为强烈建议不要使用这种“等待”)

/*Important Note: This is ugly, error prone 
          and causes eye itchiness to veteran programmers*/
public void WaitUntil(Func<bool> func)
{
    DateTime start = DateTime.Now;
    while(DateTime.Now - start < TimeSpan.FromSeconds(12))
    {
        if (func())
        {
                return;
        }
        Thread.Sleep(100);
    }
    /* Thow exception */
}

//Call
WaitUntil(() => Visible(/* Some page element*/));
于 2013-06-27T11:59:23.650 回答