private async void ManualTask(object sender, ElapsedEventArgs e) { CurrentTaskState = TaskState.WebProcessing; BandUtility band = BandUtility.Instance; // 예약 시간 검사. foreach (DateTime time in Settings.Instance.ReservedTimes) { // 소수점 이하 자리를 버리기 위해 버림 함수 사용. if ((int)Math.Truncate(DateTime.Now.TimeOfDay.TotalMinutes) == (int)time.TimeOfDay.TotalMinutes) { List <string> posts = await band.GetFeedAsync(); foreach (string post in posts) { if (_postCaches.Contains(post)) { continue; } await band.CheckAttendanceAsync(post); _postCaches.Add(post); } } } CurrentTaskState = TaskState.Running; }
private async void AutomaticTask(object sender, ElapsedEventArgs e) { CurrentTaskState = TaskState.WebProcessing; BandUtility band = BandUtility.Instance; List <string> posts = await band.GetFeedAsync(); foreach (string post in posts) { if (_postCaches.Contains(post)) { continue; } await band.CheckAttendanceAsync(post); _postCaches.Add(post); } CurrentTaskState = TaskState.Running; }
private async void ControlBanditTask() { if (CurrentTaskState == TaskState.Idle) { if (!Account.Instance.IsInitialized) { MessageBox.Show("밴딧 작업을 진행하기에 앞서 밴드 계정으로 로그인 해주시기 바랍니다.", "Bandit", MessageBoxButton.OK, MessageBoxImage.Exclamation); return; } if (MessageBox.Show("소프트웨어 사용에 대한 면책조항\n\n" + "본 소프트웨어는 Selenium 프로젝트를 이용한 웹 자동화 테스트를 위한 용도로 개발되었으며, 다른 용도로의 사용은 전혀 고려하지 않았습니다. " + "또한 소프트웨어를 이용함으로써 생길 수 있는 모든 법적 문제의 책임은 사용자에게 있습니다. " + "개발자는 오직 소프트웨어의 소스코드로 인해 발생한 문제에만 책임을 집니다.\n" + "위 면책조항에 동의하고 작업을 시작하시려면 '예'를, 거부하시려면 '아니오'를 선택해주세요.", "Bandit", MessageBoxButton.YesNo) != MessageBoxResult.Yes) { return; } Reports.Instance.AddReport(ReportType.Information, "밴딧 작업을 시작합니다!"); CurrentTaskState = TaskState.Loading; // 밴드 유틸리티 초기화. BandUtility band = BandUtility.Instance; _postCaches.Clear(); _postCaches.AddRange(await band.GetFeedAsync()); CurrentTaskState = TaskState.Running; if (Settings.Instance.IsAutomatic) { _timer.Interval = Settings.Instance.RefreshInterval * 60000; // 자동 모드. _timer.Elapsed += new ElapsedEventHandler(AutomaticTask); _timer.Enabled = true; } else { _timer.Interval = 60000; // 시간 지정 모드. _timer.Elapsed += new ElapsedEventHandler(ManualTask); _timer.Enabled = true; } _timer.Start(); } else if (CurrentTaskState == TaskState.Running) { _timer.Stop(); CurrentTaskState = TaskState.Stopping; return; } else if (CurrentTaskState == TaskState.Stopping) { _timer.Start(); CurrentTaskState = TaskState.Running; return; } else if (CurrentTaskState == TaskState.Loading || CurrentTaskState == TaskState.WebProcessing) { MessageBox.Show("밴딧 작업 진행중에는 작업 상태를 변경할 수 없습니다.", "Bandit", MessageBoxButton.OK, MessageBoxImage.Exclamation); return; } }