public DetailDataListUseCaseResponse Handle(DetailDataListUseCaseRequest request) { var filmDirectors = new List <UserDetail>(); request.ProgressPresenter.Initialize(TaskCount); request.ProgressPresenter.SetMessage("データを取得しています。しばらくお待ち下さい。"); for (int i = 0; i < TaskCount; i++) { if (request.ProgressPresenter.IsCanceled) { request.ProgressPresenter.SetMessage("取り消しています。しばらくお待ち下さい。"); Thread.Sleep(TimeSpan.FromSeconds(3)); return(new DetailDataListUseCaseResponse(ResponseResultType.Canceled, "ユーザーによってキャンセルされました。", null)); } Thread.Sleep(TimeSpan.FromSeconds(1)); var filmDirector = FilmDirectorCache.Cache.TryGetValue(i, out var value) ? value : throw new InvalidOperationException(); filmDirector.CreateDateTime = DateTime.Now; filmDirectors.Add(filmDirector); request.ProgressPresenter.UpdateValue(i + 1); } request.ProgressPresenter.SetMessage("完了までもうしばらくお待ち下さい。"); Thread.Sleep(TimeSpan.FromSeconds(3)); return(new DetailDataListUseCaseResponse(ResponseResultType.Success, string.Empty, filmDirectors)); }
private async void ExecuteDetailDataListCommand() { DetailDataListUseCaseResponse response = null; UserDetailDataList.Clear(); await DialogBus.ExecuteCancellable(p => { var request = new DetailDataListUseCaseRequest(ProgressPresenter); response = _detailDataListUseCase.Handle(request); }); if (response.ResultType == ResponseResultType.Success) { UserDetailDataList.AddRange(response.GetUserDetails.Select(x => new UserDetailData(x))); await DialogBus.Information(DialogData.Build("データ取得 完了", "データの取得が完了しました。")); } else if (response.ResultType == ResponseResultType.Failed) { await DialogBus.Error(DialogData.Build("データ取得 失敗" , $"データの取得に失敗しました。{Environment.NewLine}" + $"{response.Cause}")); } }