public void LoadTextures(LayoutEditor parentEditor, BxlytHeader header, Dictionary <string, STGenericTexture> textureList) { ParentEditor = parentEditor; TextureList = textureList; ActiveLayout = header; listViewCustom1.Items.Clear(); imgListSmall.Images.Clear(); imgListSmall.Images.Add(FirstPlugin.Properties.Resources.MissingTexture); imgListBig.Images.Clear(); imgListBig.Images.Add(FirstPlugin.Properties.Resources.MissingTexture); listViewCustom1.LargeImageList = imgListBig; listViewCustom1.SmallImageList = imgListSmall; listViewCustom1.BeginUpdate(); foreach (var texture in header.Textures) { ListViewItem item = new ListViewItem(); item.Text = texture; item.ImageIndex = 0; listViewCustom1.Items.Add(item); } //Load textures after on a seperate thread if (Thread != null && Thread.IsAlive) { Thread.Abort(); } Thread = new Thread((ThreadStart)(() => { int index = 0; foreach (var texture in header.Textures) { if (textureList.ContainsKey(texture)) { if (header is BCLYT.Header) { //Skip certain formats like bcn ones if (STGenericTexture.IsCompressed(textureList[texture].Format)) { continue; } } LoadTextureIcon(index, textureList[texture]); } index++; } })); Thread.Start(); listViewCustom1.EndUpdate(); isLoaded = true; }