private void priorityMenuItemClick(object sender, RoutedEventArgs e) { MenuItem item = sender as MenuItem; ProcessView pv = ((item.Parent as MenuItem).Parent as ContextMenu).PlacementTarget as ProcessView; Process.Priorities oldPriority = pv.Proc.Priority, newPriority = (Process.Priorities)item.Tag; if (newPriority != oldPriority || newPriority != pv.Proc.EffPriority) { pv.Proc.Priority = pv.Proc.EffPriority = newPriority; string putToQueue = ""; if (pv.Proc.IsAlive && !newPriority.Equals(oldPriority)) { scheduler.deqProc(pv.Proc); scheduler.enqProcByPriority(pv.Proc); if (pv.Proc.State == Process.States.RUNNING) { pv.Proc.State = Process.States.READY; scheduler.endCurrQuantum(); } putToQueue = " и помещён в конец соответствующей очереди"; } pv.refresh(); log("Процесс " + pv.Proc.PID + " (" + oldPriority + ") сменил приоритет на " + pv.Proc.Priority + putToQueue); } }
public RRProcQueue(int spinPeriod, Process.Priorities priority) : base(spinPeriod) { this.priority = priority; }