我写,能实现我们的人工网页表单输入的一个应用程序处理C#应用程序,蜱活动和等待
一切除了一个问题是工作好。
我有一个定时器设置,在某个页面上启用。计时器滴答事件正在每100毫秒检查页面上的Ajax更改。一旦检测到ajax更新,定时器被禁用,结果被存储,并且程序应该继续执行超出该点的代码。
问题是代码在定时器启用时继续执行。
在逻辑,只要适当页面加载,我有
t2.Enabled = TRUE;
这将立即生效,因为它应该查看的页面更新之前,发现
但发现结果之前,以下Enabled属性立即执行代码的无停顿,造成了许多问题,如变量变更。
怎样才可以有下面这行等待的代码,直到t2.Enabled被设置为false(这是
void t2_Tick(object sender, EventArgs e)
{
string postVerifyHTML = string.Empty;
try
{
postVerifyHTML = wb.Document.Body.InnerHtml;
}
// if page fails, restart
catch
{
wb.Navigate(new Uri("http://www.website.com"), "_self");
}
if (postVerifyHTML.IndexOf("indentifier html") != -1)
{
NameSearchResults[nameCounter].Visited = true;
nameCounter++;
ResultFound = true;
t2.Enabled = false;
}
t2TimerCount++;
if (t2TimerCount >= 100)
{
// TRY AGAIN
wb.Navigate(new Uri("http://www.website.com"), "_self");
}
}
protected void wb_SearchForm_DocumentCompleted(object sender, EventArgs e)
{
string pageHTML = wb.Document.Body.InnerHtml;
// Look at the page with the name result
if (pageHTML.IndexOf("Search Results: Verify") != -1)
{
//If the page has this input, a verification is available
if (pageHTML.IndexOf("txtSSN") != -1)
{
HtmlElement txtSSN = wb.Document.GetElementById("txtSSN");
txtSSN.SetAttribute("value", curSearchRecord.UniqueId.Replace("-", "").Replace(" ", ""));
HtmlElement submitBtn = wb.Document.GetElementById("ibtnVerify");
submitBtn.InvokeMember("click");
t2.Enabled = true;
// I need the code after this point to wait until the Timer is disabled
}
我试图把 而(t2.Enabled) { }在该行后面,但只是让应用程序停留在该循环中 – mrb398 2014-09-19 12:56:54
您应该可能会发布代码,以便清楚其余代码所在的位置,但是while循环并非真正合适 - 您需要使用如果应该在每次Timer tick事件触发时进行测试。 – 2014-09-19 12:59:55
我刚刚在相关的代码中加入了我的帖子 – mrb398 2014-09-19 13:10:40