コード例 #1
0
        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);
            }
        }
コード例 #2
0
ファイル: RRProcQueue.cs プロジェクト: rajeshwarn/MeowOS
 public RRProcQueue(int spinPeriod, Process.Priorities priority) : base(spinPeriod)
 {
     this.priority = priority;
 }