I belive you'll have to write your own timing loop. Is there a reason you couldn't do something roughly like this:
var refreshMillisec = 500;
var maxWait = 10000;
var myControl;
do {
Delay(refreshMilliSec);
elapsedTime += refreshMilliSec;
myControl = Page.FindChildByXPath("//*[@id='dvActionbtnArea']//a[node()[contains(., 'Add')]]");
} while (!myControl.Exists && elapsedTime <= maxWait);
if ( myControl.Exists && myControl.Enabled ) myControl.Click();
--Or this nice timing mechanism using aqDate I copied some time ago from others:
var now = aqDateTime.Now();
var giveUp = aqDateTime.AddSeconds(now,(maxWait/1000));
do {
Delay(1000);
myControl = Page.FindChildByXPath("//*[@id='dvActionbtnArea']//a[node()[contains(., 'Add')]]");
now = aqDateTime.Now();
} while ( !myControl.Exists && now <= giveUp);
The timing variables could be parameterized and the logic broken into a general function.