private async Task CheDo1() { var lstGui = (thongTinTaiKhoan_GuiBindingSource.List as IList <ThongTinTaiKhoan>).Where(p => p.Cookie != null); var lstNhan = (thongTinTaiKhoan_TimKiemBindingSource.List as IList <ThongTinTaiKhoan>);//.Where(p => string.IsNullOrEmpty(p.TrangThai)); int soNguoiGui = lstGui.Count(); int soNguoiNhan = lstNhan.Count(); if (soNguoiGui == 0) { MessageBox.Show("Vui lòng thêm người gửi hoặc kiểm tra lại trạng thái đăng nhập", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning); btnGuiTin.Enabled = true; XuLyDaLuong.ChangeText(lblTrangThai, "Vui lòng kiểm tra lại thông tin người gửi", Color.Red); return; } if (soNguoiNhan == 0) { MessageBox.Show("Vui lòng thêm người nhận", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning); XuLyDaLuong.ChangeText(lblTrangThai, "Vui lòng chọn người nhận", Color.Red); btnGuiTin.Enabled = true; return; } int thoiGianCho; if (!int.TryParse(txtThoiGianCho.Text, out thoiGianCho)) { MessageBox.Show("Chưa điền thời gian chờ", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } int index_NguoiGuiHienTai = 0; int index_NguoiNhanHienTai = 0; int index_NoiDungHienTai = 0; int soThuSeGui = Math.Min(lstGui.Sum(p => p.SoTinNhanSeGui), soNguoiNhan); int demGui = 1; var danhSachNoiDung = this.DanhSachNoiDung(); while (index_NguoiGuiHienTai < soNguoiGui && index_NguoiNhanHienTai < soNguoiNhan && !_guiTinNhanTokenResource.IsCancellationRequested) { ThongTinTaiKhoan nguoiGui = lstGui.ElementAt(index_NguoiGuiHienTai++); bool breakNow = false; for (int i = 0; i < nguoiGui.SoTinNhanSeGui; i++) { ThongTinTaiKhoan nguoiNhan = lstNhan.ElementAt(index_NguoiNhanHienTai++); if (string.IsNullOrEmpty(nguoiNhan.TrangThai)) { thongTinTaiKhoan_TimKiemBindingSource.Position = thongTinTaiKhoan_TimKiemBindingSource.IndexOf(nguoiNhan); XuLyDaLuong.ChangeText(lblTrangThai, string.Format("Đang gửi {0}/{1} {2}...", demGui++, soThuSeGui, nguoiNhan.TenHienThi), Color.Green); var noiDung = danhSachNoiDung[index_NoiDungHienTai]; Debug.WriteLine($"Gửi:/r/nTiêu đề:/r/n{this.LayTextTuSpinText(noiDung.TieuDe)}/r/nNội dung:/r/n{this.LayTextTuSpinText(noiDung.NoiDung)}"); _guiTinNhan.GuiTin(nguoiGui, nguoiNhan, this.LayTextTuSpinText(noiDung.TieuDe), this.LayTextTuSpinText(noiDung.NoiDung), (code => { if (code == CONST.TAI_KHOAN_BI_KHOA) { breakNow = true; } })); if (breakNow) { nguoiGui.TrangThai = "Bị khóa"; thongTinTaiKhoan_TimKiemBindingSource.EndEdit(); grvTaiKhoanGui.RefreshData(); grvNguoiNhan.Focus(); break; } await Task.Delay(thoiGianCho * 1000); thongTinTaiKhoan_TimKiemBindingSource.EndEdit(); grvNguoiNhan.RefreshData(); //Chuyển nội dung index_NoiDungHienTai = index_NoiDungHienTai == danhSachNoiDung.Count - 1 ? 0 : index_NoiDungHienTai + 1; } else { //Nếu đã gửi rồi thì không tính i--; } //Nếu hết người nhận thì thoát vòng lặp if (index_NguoiNhanHienTai >= soNguoiNhan) { break; } if (_guiTinNhanTokenResource.IsCancellationRequested) { break; } } } XuLyDaLuong.ChangeText(lblTrangThai, string.Format("Hoàn tất gửi tin ({0}/{1})", demGui - 1, soThuSeGui), Color.Black); btnGuiTin.Text = "Gửi tin nhắn"; btnGuiTin.BackColor = Color.LightSkyBlue; }