2011-03-02 102 views
1

我使用以下代码来计算html表中的行数,将该数字存储在for循环中,该循环用于从<td>每一行。如何在For循环中发生某些事情时增加数字

Table myTable = browser.Div(Find.ById("resultSpan")).Table(Find.First()); 

      int numRows = myTable.TableRows.Count; 
      List<string> myList = new List<string>(); 
      for (int i = 1; i < numRows; i++) 
      { 
       myList.Add(myTable.TableRows[i].TableCells[1].Text); 
      } 

我把我的窗体上label控制和我基本上希望它能够实时地增加,所以我可以看到如何快速程序解析数据。

平均而言,我正在处理〜2000行,所以需要很长时间,我希望能够看到状态。上面的代码使用WatiN,但我确定这是一个C#问题。

编辑这是比我以为 -

for (int i = 1; i < numRows; i++) 
      { 
       myList.Add(myTable.TableRows[i].TableCells[1].Text); 
       label1.Text = i.ToString(); 
      } 
+0

抱歉,我想提供status update我误解了你的问题:) – Shoban

+0

@Shoban,我希望我的表单上的'label'能够反映出'int i'。 –

+1

检查这个问题。 http://stackoverflow.com/questions/1194620/c-newbie-show-progress-during-a-loop-wpf会尝试一个例子。 – Shoban

回答

1

您可能需要使用BackgroundWorker,你在这儿不会阻止你的用户界面更容易,这样你就可以通过BackgroundWorker的

+0

这个程序有一个工作,所以阻止用户界面不是问题,但将使用BackgroundWorker加快解析的HTML? –

+0

我不会加快解析速度,但它会给你一个跟踪进度的好方法。你无法更新标签的原因是你在UI线程上运行繁重的任务,所以它必须等到你的任务完成。如果你能够削减你的HTML,那么你可以使用PLINQ [(Parallel.For)](http://www.codeproject.com/KB/cs/aforge_parallel.aspx)多个部分使它成为多核(处理器内核)这可能会加快处理速度。 –

相关问题