来自另一个线程的foreach listview项目

时间:2014-01-29 22:16:20

标签: c# multithreading winforms listview

我想从另一个线程使用foreach(objectListView1.Items中的ListViewItem项),但我不知道如何。

我的代码:

        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();
}

1 个答案:

答案 0 :(得分:3)

您需要在UI线程上执行整个循环,因为您正在触摸多个控件。

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