private void StatusManager_OnStatusEntryUpdate_GUI() { while (true) { StatusManager.StatusEntry status_entry = null; //Utilities.LockPerfTimer l1_clk = Utilities.LockPerfChecker.Start(); lock (status_entries_still_to_process_lock) { //l1_clk.LockPerfTimerStop(); if (status_entries_still_to_process.Count > 0) { var pair = status_entries_still_to_process.First(); status_entry = pair.Value; status_entries_still_to_process.Remove(pair.Key); } } // Is there nothing left to do? if (null == status_entry) { //Utilities.LockPerfTimer l2_clk = Utilities.LockPerfChecker.Start(); lock (status_entries_still_to_process_lock) { //l2_clk.LockPerfTimerStop(); status_entries_still_to_process_fresh_thread_running = false; break; } } // Process this entry StatusBarItem status_bar_item; if (!status_bar_items.TryGetValue(status_entry.key, out status_bar_item)) { status_bar_item = new StatusBarItem(); status_bar_items[status_entry.key] = status_bar_item; ObjStatusBarContainer.Children.Clear(); var status_bar_items_ordered = from status_bar_item_ordered in status_bar_items.Values orderby status_bar_item_ordered.CreationTime ascending select status_bar_item_ordered; foreach (StatusBarItem child in status_bar_items_ordered) { ObjStatusBarContainer.Children.Add(child); } } status_bar_item.SetStatus(status_entry); ExpungeStaleStatusBarItems(); } }
private void StatusManager_OnStatusEntryUpdate_GUI() { while (true) { StatusManager.StatusEntry status_entry = null; lock (status_entries_still_to_process) { if (status_entries_still_to_process.Count > 0) { var pair = status_entries_still_to_process.First(); status_entry = pair.Value; status_entries_still_to_process.Remove(pair.Key); } } // Is there nothing left to do? if (null == status_entry) { lock (status_entries_still_to_process) { status_entries_still_to_process_fresh_thread_running = false; break; } } // Process this entry StatusBarItem status_bar_item; if (!status_bar_items.TryGetValue(status_entry.key, out status_bar_item)) { status_bar_item = new StatusBarItem(); status_bar_items[status_entry.key] = status_bar_item; ObjStatusBarContainer.Children.Clear(); var status_bar_items_ordered = from status_bar_item_ordered in status_bar_items.Values orderby status_bar_item_ordered.CreationTime descending select status_bar_item_ordered; foreach (StatusBarItem child in status_bar_items_ordered) { ObjStatusBarContainer.Children.Add(child); } } status_bar_item.SetStatus(status_entry.key, status_entry.LastStatusMessage, status_entry.LastStatusMessageCancellable, status_entry.current_update_number, status_entry.total_update_count); ExpungeStaleStatusBarItems(); } }