Exemple #1
0
        private async void FeedLoop(List <CommentData.PostData> posts)
        {
            StringBuilder extractedLink = new StringBuilder();

            TB_Progress.Text = "작업중...";
            int failCount = 0;
            await Dispatcher.Invoke(async() =>
            {
                for (int i = 0; i < posts.Count; i++)
                {
                    if (isClosed)
                    {
                        break;
                    }
                    var post = posts[i];
                    if (CB_Target.SelectedIndex == 1 && !post.permission.Equals("A"))
                    {
                        continue;
                    }
                    else if (CB_Target.SelectedIndex == 2 && !post.permission.Equals("F"))
                    {
                        continue;
                    }
                    else if (CB_Target.SelectedIndex == 3 && !post.permission.Equals("P"))
                    {
                        continue;
                    }
                    else if (CB_Target.SelectedIndex == 4 && !post.permission.Equals("M"))
                    {
                        continue;
                    }
                    else if (CB_Target.SelectedIndex == 5 && !post.bookmarked)
                    {
                        continue;
                    }

                    if (CB_Task.SelectedIndex == 0)
                    {
                        try
                        {
                            await ChangePostRange(post);
                        }
                        catch (Exception) { failCount++; }
                        await Task.Delay(100);
                    }
                    if (CB_Task.SelectedIndex == 1)
                    {
                        extractedLink.Append(post.permalink);
                        extractedLink.Append("\n");
                    }
                    if (CB_Task.SelectedIndex == 2)
                    {
                        try
                        {
                            if (CB_Target.SelectedIndex == 5)
                            {
                                await KakaoRequestClass.PinPost(post.id, true);
                            }
                            else
                            {
                                await KakaoRequestClass.PinPost(post.id, false);
                            }
                        } catch (Exception) { failCount++; }
                        await Task.Delay(100);
                    }
                    TB_Progress.Text = $"작업중... ({i}/{posts.Count})";
                    PB_Main.Value    = (double)i / posts.Count * 100.0;
                }

                if (!isClosed)
                {
                    Dispatcher.Invoke(() =>
                    {
                        if (extractedLink.Length > 0)
                        {
                            Clipboard.SetDataObject(extractedLink.ToString());
                            MessageBox.Show("링크 추출 완료\n추출된 링크는 클립보드에 복사되었습니다. Ctrl+V를 사용하여 붙여넣기하세요.", "안내");
                        }
                        else
                        {
                            MessageBox.Show($"작업 완료.\n작업에 실패한 게시글 수 : {failCount.ToString()}\n(제한된 게시글과 같은 이유로 작업에 실패하는 경우가 있습니다)", "안내");
                        }
                        SP_Progress.Visibility = Visibility.Collapsed;
                        Close();
                    });
                }
            });
        }