是否可以从该方法内部调用用于为方法创建参数的函数? (C#)

时间:2013-06-27 11:55:50

标签: c# .net delegates

这有点难以解释,但我希望这个例子能够清除它。

说我有一些函数调用Visible:

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 */));

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

1 个答案:

答案 0 :(得分: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*/));