public void ReloadTextureIcons(ITextureIconLoader textureIconList) { if (Thread != null && Thread.IsAlive) { Thread.Abort(); } this.BeginUpdate(); Thread = new Thread((ThreadStart)(() => { List <TreeNode> treeNodes = new List <TreeNode>(); List <Image> imageIcons = new List <Image>(); foreach (TreeNode node in textureIconList.IconTextureList) { if (node is STGenericTexture) { try { var image = ((STGenericTexture)node).GetBitmap(); if (image != null) { image = ((STGenericTexture)node).GetComponentBitmap(image); treeNodes.Add(node); imageIcons.Add(image); } } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } } for (int i = 0; i < treeNodes.Count; i++) { AddImageOnThread(i, treeNodes[i]); } if (this.InvokeRequired) { this.Invoke((MethodInvoker) delegate { this.ImageList.Images.AddRange(imageIcons.ToArray()); }); } for (int i = 0; i < treeNodes.Count; i++) { imageIcons[i].Dispose(); } imageIcons.Clear(); treeNodes.Clear(); if (this.InvokeRequired) { this.Invoke((MethodInvoker) delegate { this.EndUpdate(); }); } })); Thread.Start(); }
public void LoadGenericTextureIcons(ITextureIconLoader iconList) { treeViewCustom1.TextureIcons.Add(iconList); treeViewCustom1.ReloadTextureIcons(iconList); }