从backgroundWorker将图像添加到imagelist中两次添加第一个

时间:2016-01-18 08:49:07

标签: c#

我在类中的backgroundWorker中添加/更改listview项 添加/编辑listview项目没有问题。 问题是在第一个循环中第一个项目图片被添加了两次,所以每个项目图片在第一个项目之后被一个项目关闭,它的问题是我做错了调用的东西,我用Google搜索并尝试其他方法做它,但似乎也发生了同样的事情。

WinForm中的函数

public void _ListViewEditRow(int index, string item_title, params string[] subitem_titles)
{
    this.Invoke(new MethodInvoker(delegate {
        listView.EditRow(index, item_title, subitem_titles); }));
}

public void _ListViewAddImage(int index, string imgName)
{
    this.Invoke(new MethodInvoker(delegate 
    {
     if (imgName != null && File.Exists(imgName))
    {
        imlSmallIcons.Images.Add(Image.FromFile(imgName));
        //imlLargeIcons.Images.Add(Image.FromFile(imgName));
    }

    this.Invalidate();
    }));
}

BackgroundWorker的

        BackgroundWorker bw = new BackgroundWorker();
        bw.DoWork += new DoWorkEventHandler(delegate (object o, DoWorkEventArgs args)
        {
            gIndex = -1;
            foreach (Item gItem in items.Values)
            {
                gIndex++;

                    _receiver._ListViewEditRow(gIndex, gItem.name, gItem.url);

                    string ImageName = @"_cache\" + gItem.name + ".png";

                    if (!File.Exists(ImageName))
                        WebClient.DownloadFile(@gItem.url, ImageName);

                    _receiver._ListViewAddImage(gIndex, ImageName);
                }

                Thread.Sleep(3000);
            }
        });

        bw.RunWorkerAsync();

0 个答案:

没有答案