WindowsFormsApplication1.Form1.bw_DoWork C# (CSharp) Method

bw_DoWork() private method

private bw_DoWork ( object sender, DoWorkEventArgs e ) : void
sender object
e DoWorkEventArgs
return void
        private void bw_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker worker = sender as BackgroundWorker;
            if ((worker.CancellationPending == true))
            {
                e.Cancel = true;
            }
            else
            {
#if (!DEBUG)
                if (!getUUID())
                {
                    updateUITextLine(info_display, "获取uuid失败", Environment.NewLine, Color.Red);             
                    return;
                }
                showQRImage();
                while (waitForLogin() != "200") ;

                if (!login())
                {
                    updateUITextLine(info_display, "登录失败", Environment.NewLine, Color.Red);
                    return;
                }

                if (!webwxinit())
                {
                    updateUITextLine(info_display, "初始化失败", Environment.NewLine, Color.Red);
                    return;
                }
#endif

#if (DEBUG)
                start_btn.Invoke(new Action(() =>
                {
                    this.Controls.Remove(start_btn);
                    start_btn.Dispose();
                }));
                qrcode_img.Invoke(new Action(() =>
                {
                    this.Controls.Remove(qrcode_img);
                    qrcode_img.Dispose();
                }));

                info_display.Invoke(new Action(() =>
                {
                    info_display.Location = new System.Drawing.Point(0, 0);
                    info_display.Size = new Size(333, 438);
                }));
#endif
                var member_list = webwxgetcontact();
                if(member_list.Count == 0)
                {
                    updateUITextLine(info_display, "好友列表为空", Environment.NewLine, Color.Red);
                    return;
                }

                Console.WriteLine("member_list: ");
                foreach(var member in member_list)
                {
                    Console.WriteLine(member["UserName"]);
                }
                
                var member_count = member_list.Count;
                updateUITextLine(info_display, String.Format("通讯录共{0}位好友", member_count), Environment.NewLine, Color.Black);
                var room_name = "";
                List<string> result = new List<string>();
                List<string> rst_blk = new List<string>();
                var d = new Dictionary<string, dynamic>();
                member_list.ForEach(member =>
                {
                    d[member["UserName"]] = Tuple.Create<string, string>((member["NickName"]),
                                            (member["RemarkName"]));
                });
                updateUITextLine(info_display, "开始查找...", Environment.NewLine, Color.Black);
                var group_num = (int)Math.Ceiling(member_count / (float) MAX_GROUP_NUM);
                Console.WriteLine("***************** group number: " + group_num);
                for (int i = 0; i < group_num; i++)
                {
                    var usernames = new List<string>();
                    for (int j = 0; j < MAX_GROUP_NUM; j++)
                    {
                        if (i * MAX_GROUP_NUM + j >= member_count)
                        {
                            break;
                        }
                        var member = member_list[i * MAX_GROUP_NUM + j];
                        usernames.Add(member["UserName"]);
                    }
                    List<string> deleted_list;
                    List<string> blocked_list;
                    if (String.IsNullOrEmpty(room_name))
                    {
                        var tuple = createChatRoom(usernames);
                        room_name = tuple.Item1;
                        if (String.IsNullOrEmpty(room_name))
                        {
                            if (tuple.Item4.Equals("Too many attempts. Try again later."))
                            {
                                updateUITextLine(info_display, "操作过于频繁,请稍后再试", Environment.NewLine, Color.Red);
                                return;
                            } else
                            {
                                Console.WriteLine("***** no chatroom created");
                            }
                        }
                        deleted_list = tuple.Item2;
                        blocked_list = tuple.Item3;
                    }
                    else
                    {
                        var tuple = addMember(room_name, usernames);
                        deleted_list = tuple.Item1;
                        blocked_list = tuple.Item2;
                        var err_msg = tuple.Item3;
                        if (err_msg.Equals("Too many attempts. Try again later."))
                        {
                            updateUITextLine(info_display, "操作过于频繁,请稍后再试", Environment.NewLine, Color.Red);
                            return;  
                        }
                    }

                    if (deleted_list.Count > 0)
                    {
                        result.AddRange(deleted_list);
                    }
                    if (blocked_list.Count > 0)
                    {
                        rst_blk.AddRange(blocked_list);
                    }
                    if (string.IsNullOrEmpty(room_name))
                    {
                        // TO_DO: if failed to create the chatroom 
                    }
                    if(!String.IsNullOrEmpty(room_name) && !deleteMember(room_name, usernames))
                    {
                        updateUITextLine(info_display, "操作过于频繁,请稍后再试", Environment.NewLine, Color.Red);
                        return;
                    }
                    result_update(deleted_list, d, "删除");
                    result_update(blocked_list, d, "拉黑");
                    
                    if (i != group_num - 1)
                    {
                        updateUITextLine(info_display, "", Environment.NewLine, Color.Black);
                        updateUITextLine(info_display, "30秒后继续查找,请耐心等待...", Environment.NewLine, Color.Black);
                        System.Threading.Thread.Sleep(30000); // 30s interval
                    }
                }
                updateUITextLine(info_display, Environment.NewLine + "结果汇总完毕,30s后可重试...", Environment.NewLine, Color.Black);
                conclude(result, "以下联系人已将你删除", d);
                conclude(rst_blk, "以下联系人已将你拉黑", d);
            }          
        }