private void InitProperty() { Task = new TaskInfo(); Setting = new Settings { IsAuto = MyAppInfo.Instance().Setting.IsAuto, CheckTick = MyAppInfo.Instance().Setting.CheckTick, KillNotRespond = MyAppInfo.Instance().Setting.KillNotRespond, TaskList = MyAppInfo.Instance().Setting.TaskList }; }
public MonitorWindowViewModel(IEventAggregator eventAggregator) { App = MyAppInfo.Instance(); IsAuto = App.Setting.IsAuto; FileManager.TaskCheckAll(); _EventAggregator = eventAggregator; _EventAggregator.GetEvent <SettingEvent>().Subscribe((e) => { this.TaskList = new ObservableCollection <TaskInfo>(e.TaskList); RaisePropertyChanged("TaskList"); }); }
public PopupDialogBase() { MyAppInfo.Instance().LoadSettings(); InitProperty(); }
// 생성자 public MainWindowViewModel(IEventAggregator eventAggregator) { dispatcher = Application.Current.Dispatcher; _EventAggregator = eventAggregator; App = MyAppInfo.Instance(); App.LoadSettings(); FileManager.OnRunTask = (s) => { Log($"Run: {s}", LogType.Normal); }; FileManager.OnKillTask = (s) => { Log($"Kill: {s}", LogType.Normal); }; FileManager.OnResponseFail = (s) => { Log($"응답없음 발생: {s}", LogType.Warning); }; FileManager.OnWerFault = () => { dtLastTime = DateTime.Now; Log($"WerFault 감지: {MaxSec}초 후 Kill 합니다. ", LogType.Warning, false); }; #region 스레드 dispatcher.Invoke(async() => { await Task.Run(async() => { while (true) { // 현재시각 표시 CurrentTime = DateTime.Now; // 프로그램 상태 체크 FileManager.TaskCheckAll(); // 자동 실행 if (App.Setting.IsAuto) { if (App.StxTick >= App.Setting.CheckTick) { App.StxTick = 0; FileManager.RunProcess(); } else { App.StxTick++; } } else { App.StxTick = 0; } // 현재 정보 이벤트 게시 _EventAggregator.GetEvent <SettingEvent>().Publish(MyAppInfo.Instance().Setting); // 프로그레스바 PbVal = App.StxTick; PbMax = App.Setting.CheckTick; IsAuto = App.Setting.IsAuto; SelName = App.SelName; // WerFault 제거 if (MyAppInfo.Instance().IsWerFault&& dtLastTime.HasValue) { var sec = DateTime.Now - dtLastTime.Value; if (sec.TotalSeconds >= MaxSec) { // 죽이고 FileManager.KillProcess("WerFault"); await Task.Delay(1000); // 1초 뒤에 또 죽이고 (한번에 안 죽음) FileManager.KillProcess("WerFault"); MyAppInfo.Instance().IsWerFault = false; dtLastTime = null; } else { Log($"WerFault 감지: {MaxSec - (int)sec.TotalSeconds}초 후 Kill 합니다. ", LogType.Warning, false); } } // 스레드 지연시간 await Task.Delay(1000); } }); }); #endregion }