示例#1
0
        /// <summary>
        /// Обновление интерфейса в соответствии со списком процессов
        /// </summary>
        private void UpdateInterface()
        {
            int  scrollTo = processGridView.FirstDisplayedScrollingRowIndex;
            long pid      = -1;

            if (processBindingSource.Current != null)
            {
                pid = ((Process)processBindingSource.Current).Id;
            }
            processList = ProcessList.TryGetInstance();
            if (processList != null && processList.List.Count > 0)
            {
                processBindingSource.Clear();
                foreach (Process p in processList.List)
                {
                    processBindingSource.Add(p);
                }
                ProcessList.Unlock();
                int position = 0;
                for (int i = 0; i < processBindingSource.Count; i++)
                {
                    if (((Process)processBindingSource[i]).Id == pid)
                    {
                        position = i;
                    }
                }
                processBindingSource.Position = position;
                processGridView.FirstDisplayedScrollingRowIndex = Math.Min(processGridView.RowCount, Math.Max(0, scrollTo));
                totalProcessToolStripStatusLabel.Text           = processBindingSource.Count.ToString();
            }
            else
            {
                LogClass.GetInstance().Warn("Список процессов заблокирован для доступа");
            }
        }
示例#2
0
        /// <summary>
        /// Обновляет список процессов, логирует изменения в списке процессов
        /// </summary>
        public static void Update()
        {
            ProcessList pl = ProcessList.TryGetInstance();

            if (pl != null)
            {
                pl.List.Clear();
                foreach (var p in Process.GetProcesses().ToList())
                {
                    pl.List.Add(p);
                }
                pl.List.Sort(delegate(Process a, Process b) { return(a.ProcessName.CompareTo(b.ProcessName)); });
                processDiffer.Add(pl.List);
                ProcessList.Unlock();
                processDiffer.CompareHashes();
            }
        }