private void sessionsTrayMenu() { //savedSessionsToolStripMenuItem.DropDownItems.Clear(); seekerSessions sessionToLoad = new seekerSessions(); List <ToolStripMenuItem> sessionMenuItems = new List <ToolStripMenuItem>(); string filepath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\Seeker\Sessions\" + frmMain.domainAccountData[1] + @"\"; Thread thLoadTraySessions = new Thread(() => { if (Directory.Exists(filepath)) { ToolStripMenuItem sessionLoadProgress = new ToolStripMenuItem(); sessionLoadProgress.Text = "Loading..."; sessionLoadProgress.Image = Seeker.Properties.Resources.spinningWeel16; Invoke((MethodInvoker) delegate { savedSessionsToolStripMenuItem.DropDownItems.Clear(); savedSessionsToolStripMenuItem.DropDownItems.Add(sessionLoadProgress); }); DirectoryInfo d = new DirectoryInfo(filepath); foreach (var file in d.GetFiles("*.xml")) { sessionToLoad = dLibObjSerializer.dLibObjSerializer.XmlDeSerializeObjectFromDisk <seekerSessions>(file.FullName); ToolStripMenuItem itemToInsert = new ToolStripMenuItem(); itemToInsert.Text = sessionToLoad.Description + " - " + sessionToLoad.SessionDate; itemToInsert.Click += new EventHandler(sessionLauncherStripClick); itemToInsert.Tag = sessionToLoad; itemToInsert.Image = Seeker.Properties.Resources.seekerSession16; //Insert session Objects foreach (seekerObjects sessionObj in sessionToLoad.Objects) { seekerSessions sessionToOverhideAndLoad = new seekerSessions(); sessionToOverhideAndLoad.Objects.Add(sessionObj); ToolStripMenuItem itemToInsertInSessionObjects = new ToolStripMenuItem(); itemToInsertInSessionObjects.Text = sessionObj.QueryData; itemToInsertInSessionObjects.Tag = sessionToOverhideAndLoad; itemToInsertInSessionObjects.Click += new EventHandler(sessionLauncherStripClick); switch (sessionObj.Type) { case seekerObjectType.AD_Computer: itemToInsertInSessionObjects.Image = imgListObjType.Images["Computer"]; break; case seekerObjectType.AD_User: itemToInsertInSessionObjects.Image = imgListObjType.Images["User"]; break; case seekerObjectType.AD_Group: itemToInsertInSessionObjects.Image = imgListObjType.Images["Group"]; break; case seekerObjectType.AD_OrganizationalUnit: itemToInsertInSessionObjects.Image = imgListObjType.Images["ouIcon"]; break; } itemToInsert.DropDownItems.Add(itemToInsertInSessionObjects); } sessionMenuItems.Add(itemToInsert); //savedSessionsToolStripMenuItem.DropDownItems.Add(itemToInsert); } try { Invoke((MethodInvoker) delegate { savedSessionsToolStripMenuItem.DropDownItems.Clear(); ToolStripMenuItem[] arr = sessionMenuItems.OrderBy(o => o.Text).ToArray(); savedSessionsToolStripMenuItem.DropDownItems.AddRange(arr); }); } catch { } } }); thLoadTraySessions.Start(); }