2014-01-29 76 views
1

我想從另一個線程使用foreach(objectListView1.Items的ListViewItem項目),但我不知道如何。從另一個線程foreach listview項目

我的代碼:

 void createMoviesXML() 
     { 
      foreach (ListViewItem item in objectListView1.Invoke(new Action(() => objectListView1.Items)) // I know it's wrong 
      { 
       if (Regex.IsMatch(item.SubItems[0].Text, @"&")) 
       { 
        item.SubItems[0].Text = Regex.Replace(item.SubItems[0].Text, @"&", "&"); 
       } 
      } 
     } 

private void Form1_Load(object sender, EventArgs e) 
     { 
      Thread thr1 = new Thread(new ThreadStart(createMoviesXML)); 
      thr1.Start(); 
} 
+0

這麼多問題..第一個是你爲什麼使用正則表達式匹配基本字符串? –

+0

我不知道。我認爲這是最好的辦法。我將擴展這個正則表達式。當然,這將需要來自另一個線程的foreach。 – Notoric

回答

2

你需要做的整個循環在UI線程上,因爲你接觸的幾個控制。

void createMoviesXML() 
{ 
    objectListView1.Invoke(new Action(() => 
    { 
     foreach (var item in objectListView1.Items) 
     { 
      // Do stuff 
     } 
    })); 
}