public static void CleanUpFunctionProcesses()
 {
     Processes?.ForEach(process =>
     {
         var processName = process.ProcessName;
         if (!process.HasExited)
         {
             process.Kill();
         }
     });
     Processes?.Clear();
 }
 public static void CleanUpFunctionProcesses()
 {
     Processes?.ForEach(process =>
     {
         //process.WaitForExit()
         var processName = process.ProcessName;
         if (!process.HasExited)
         {
             process.Kill();
         }
         //foreach (var process1 in Process.GetProcessesByName(processName))
         //{
         //    process1.Kill();
         //}
     });
     Processes?.Clear();
 }
Ejemplo n.º 3
0
        /// <summary>,
        /// Refresh the processes.
        /// </summary>
        private void OnRefresh()
        {
            Processes.Clear();

            Processes.AddRange(Process.GetProcesses()
                               .Where(x =>
            {
                var isNotEmpty = !string.IsNullOrWhiteSpace(x.MainWindowTitle);

                try
                {
                    var hasFFXIMain = (from ProcessModule m in x.Modules where m.ModuleName.ToLower() == "ffximain.dll" select m).FirstOrDefault() != null;
                    return(isNotEmpty && hasFFXIMain);
                }
                catch
                {
                    return(false);
                }

                return(isNotEmpty);
            })
                               .ToList());
        }
        public void SimulateProcesses()
        {
            if (Processes.Count <= 0)
            {
                return;
            }

            // If Time unit smaller than or equal 0
            if (TimeUnit <= 0)
            {
                // Use FSFC(First Come First Served) Algorithm
                var Fcfs = new CPU_FCFS_Algorithm(Processes);

                Fcfs.SimulateProcesses();

                TerminatedProcesses = Fcfs.TerminatedProcesses;

                // and return here
                return;
            }

            var currentTime = 0;

point:

            var PQueue = Processes.Where(a => a.ArrivalTime <= currentTime).OrderBy(a => a.ArrivalTime).ToList();

            if (PQueue.Count == 0)
            {
                var process = new OSASProcess();
                process.Id            = -1;
                process.StartTime     = currentTime;
                process.BurstTime    += (Processes.OrderBy(a => a.ArrivalTime).FirstOrDefault().ArrivalTime - currentTime);
                process.FinishTime    = process.StartTime + process.BurstTime;
                process.RemainingTime = 0;
                currentTime           = process.FinishTime;
                TerminatedProcesses.Add(process);
                goto point;
            }

            while (PQueue.Count > 0)
            {
                var p = PQueue.FirstOrDefault();

                if (p.RemainingTime > TimeUnit)
                {
                    PQueue.Remove(p);

                    p.StartTime = currentTime;

                    p.RemainingTime -= TimeUnit;

                    currentTime += TimeUnit;

                    var pro = new OSASProcess(p)
                    {
                        FinishTime = currentTime,
                        WaitTime   = p.StartTime - LastFinishOrArrival(TerminatedProcesses, p)
                    };

                    TerminatedProcesses.Add(pro);
                    Processes.Remove(p);

                    PQueue.AddRange(Processes.Where(a => a.ArrivalTime <= currentTime &&
                                                    !PQueue.Exists(b => b.Id.Equals(a.Id)) &&
                                                    a.Id != p.Id).OrderBy(a => a.ArrivalTime));

                    PQueue.Add(p);
                }
                else
                {
                    PQueue.Remove(p);

                    p.StartTime = currentTime;

                    currentTime += p.RemainingTime;

                    p.RemainingTime = 0;

                    p.WaitTime = p.StartTime - LastFinishOrArrival(TerminatedProcesses, p);

                    p.FinishTime = currentTime;

                    p.TurnAroundTime = p.FinishTime - p.ArrivalTime;

                    TerminatedProcesses.Add(p);
                    Processes.Remove(p);

                    PQueue.AddRange(Processes.Where(a => a.ArrivalTime <= currentTime &&
                                                    !PQueue.Exists(b => b.Id.Equals(a.Id)))
                                    .OrderBy(a => a.ArrivalTime));
                }

                if (PQueue.Count == 0 && Processes.Count > 0)
                {
                    var process = new OSASProcess();
                    process.Id            = -1;
                    process.StartTime     = currentTime;
                    process.BurstTime    += (Processes.OrderBy(a => a.ArrivalTime).FirstOrDefault().ArrivalTime - currentTime);
                    process.FinishTime    = process.StartTime + process.BurstTime;
                    process.RemainingTime = 0;
                    currentTime           = process.FinishTime;
                    TerminatedProcesses.Add(process);
                    PQueue.AddRange(Processes.Where(a => a.ArrivalTime <= currentTime &&
                                                    !PQueue.Exists(b => b.Id.Equals(a.Id)))
                                    .OrderBy(a => a.ArrivalTime));
                }
            }

            Processes.Clear();

            CalculatedSuccessfully = true;
        }
Ejemplo n.º 5
0
 public void Clear()
 {
     Processes.Clear();
     Counters = null;
 }
Ejemplo n.º 6
0
 public Task Refresh()
 {
     Processes.Clear();
     return(Task.Factory.StartNew(UpdateProcesses));
 }
Ejemplo n.º 7
0
        /// <summary>
        /// Initializes a new instance of the ManageProcessViewModel class.
        /// </summary>
        public ManageProcessViewModel(IProcessManager processManager, DialogHandler dialogHandler)
        {
            _processManager = processManager;
            _dialogHandler  = dialogHandler;

            Messenger.Default.Register <UpdateMessage>(this, message =>
            {
                switch (message.UpdateType)
                {
                case UpdateType.NewProcessCreated:
                    var processes        = Processes.ToList();
                    var currentProcess   = (Process)message.Parameter;
                    currentProcess.Start = currentProcess.Start.ToLocalTime();
                    currentProcess.End   = currentProcess.End.ToLocalTime();
                    processes.Add(currentProcess);
                    DispatcherHelper.CheckBeginInvokeOnUI(() => Processes = new ObservableCollection <Process>(processes.OrderByDescending(p => p.Start)));
                    break;
                }
            });

            LoadedCommand = new RelayCommand(async() =>
            {
                try
                {
                    Mouse.SetCursor(Cursors.Arrow);
                    SetGridSettings();
                    if (_loadedFirst && _processManager != null)
                    {
                        _loadedFirst = false;
                        await _dialogHandler.ShowProgress(null, async() =>
                        {
                            DispatcherHelper.CheckBeginInvokeOnUI(() => Processes.Clear());
                            Log.Info(LogMessages.ManageProcessLoadProcesses);
                            var response = await _processManager.GetProcessesAsync(true);
                            if (ResponseValidator.Validate(response, false))
                            {
                                DispatcherHelper.CheckBeginInvokeOnUI(() =>
                                {
                                    if (response.ResponseObject.Any())
                                    {
                                        var ordered = response.ResponseObject.OrderByDescending(p => p.Start);
                                        Processes   = new ObservableCollection <Process>(ordered.Select(p =>
                                        {
                                            p.Start = p.Start.ToLocalTime();
                                            p.End   = p.End.ToLocalTime();
                                            return(p);
                                        }));
                                        RaisePropertyChanged("Processes");
                                    }
                                });
                            }
                        });
                    }
                }
                catch (Exception exception)
                {
                    Messenger.Default.Send(exception);
                }
            });

            RefreshProcessCommand = new RelayCommand <string>(async id =>
            {
                try
                {
                    var processResponse = await _processManager.GetProcessAsync(id);
                    if (ResponseValidator.Validate(processResponse, false))
                    {
                        var selectedItem = Processes.FirstOrDefault(p => p.Id == id);
                        if (selectedItem != null)
                        {
                            Processes[Processes.IndexOf(selectedItem)] = processResponse.ResponseObject;
                            Processes = new ObservableCollection <Process>(Processes);
                        }
                    }
                }
                catch (Exception exception)
                {
                    Messenger.Default.Send(exception);
                }
            });

            CancelProcessCommand = new RelayCommand <Process>(async process =>
            {
                try
                {
                    var processResponse = await _processManager.CancelProcessAsync(process.Id);
                    if (ResponseValidator.Validate(processResponse, false))
                    {
                        var selectedItem = Processes.FirstOrDefault(p => p.Id == process.Id);
                        if (selectedItem != null)
                        {
                            selectedItem.Status = ProcessStatusEnum.Cancelled;
                            Processes           = new ObservableCollection <Process>(Processes);
                        }
                    }
                }
                catch (Exception exception)
                {
                    Messenger.Default.Send(exception);
                }
            });

            ShowProcessDetailsCommand = new RelayCommand <Process>(async process =>
            {
                if (process == null)
                {
                    return;
                }
                var context = new CommonDialogViewModel
                {
                    Header  = "Process details",
                    Buttons = ButtonsEnum.Ok,
                    Content = new JContent(process)
                };
                var view = new CommonDialog {
                    DataContext = context
                };
                await _dialogHandler.Show(view);
            });
        }
Ejemplo n.º 8
0
 void Clear(object parameter)
 {
     Processes.Clear();
 }
Ejemplo n.º 9
0
 /// <summary>
 /// Vide les propriétés de navigation.
 /// </summary>
 protected virtual void ClearNavigationProperties()
 {
     Childs.Clear();
     Parent = null;
     Processes.Clear();
 }