/// <summary> /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void button1_Click(object sender, EventArgs e) { List <int> numbers = new List <int> { 1, 2, 3, 4, 5, 6, 7, 8 }; long totalNums = 0; for (int i = 0; i < numbers.Count; i++) { int number = numbers[i]; RedisHelperSpecial redisHelperSpecial = new RedisHelperSpecial(number); //啦list List <string> userids = redisHelperSpecial.GetRedisUserInfos().Select(u => u.UserId).ToList(); for (int j = 0; j < userids.Count; j++) { //获取list totalNums += redisHelperSpecial.GetRedisUserAssetRatiosAsync(userids[j]).Count; } } // MessageBox.Show(totalNums.ToString()); }
private void btn_CheckAllUserInfo_Click(object sender, EventArgs e) { //验证所有的用户和资产信息 try { //获取所有的asset信息 string[] redisNumbers = ConfigurationManager.AppSettings["AllDbNumberNotExitEnd"].Split(','); Dictionary <string, int> dicUserInfo = new Dictionary <string, int>(); List <string> userIds = new List <string>(); for (int i = 0; i < redisNumbers.Length; i++) { int number = Convert.ToInt32(redisNumbers[i]); RedisHelperSpecial redisHelperSpecial = new RedisHelperSpecial(number); List <string> oneRedisUserIds = redisHelperSpecial.GetRedisUserInfos().Select(a => a.UserId).ToList(); foreach (string t in oneRedisUserIds) { if (!dicUserInfo.ContainsKey(t)) { userIds.Add(t); dicUserInfo.Add(t, number); } } } //循环跑 if (dicUserInfo.Count == 0) { MessageBox.Show("redis不存在用户购买数据"); } string oldPurchaseOrder = "OldPurchaseOrder"; CloudTable assertIdsTable = this.tableClient.GetTableReference(this.loadAppSettings.SearchUserInfoAzureTable); TableQuery <YemUserProductDto> queryYemProduct = new TableQuery <YemUserProductDto>() .Where($"PartitionKey eq '{oldPurchaseOrder}' and IsLock eq false"); List <YemUserProductDto> yemUserProductDtos = assertIdsTable.ExecuteQuery(queryYemProduct).Where(p => userIds.Contains(p.UserId)).ToList(); this.lbl_ShowAllUserInfo.Text = "正在开始验证所有的用户数据,请稍等....."; this.btn_CheckAllUserInfo.Enabled = false; this.txb_allUserFail.Text = "0"; this.txb_allUserSuccess.Text = "0"; //跑数据 for (int i = 0; i < 6; i++) { Thread th = new Thread(() => { while (dicUserInfo.Count > 0) { string userid = string.Empty; int dbNumber = 0; lock (this.objLock) { if (dicUserInfo.Count > 0) { userid = dicUserInfo.Keys.First(); dbNumber = dicUserInfo[userid]; dicUserInfo.Remove(userid); } } if (!string.IsNullOrEmpty(userid)) { //执行 bool result = this.CheckPurchaseOrderInfo(userid, dbNumber, yemUserProductDtos, new RedisHelperSpecial(this.loadAppSettings.EndDbNumber)); lock (this.objLock) { this.UpdateTxbText(result ? this.txb_allUserSuccess : this.txb_allUserFail); } } } }); th.IsBackground = true; th.Start(); } Thread thShow = new Thread(() => { while (true) { if (dicUserInfo.Count > 0) { Thread.Sleep(1500); continue; } break; } Thread.Sleep(2000); this.btn_CheckAllUserInfo.Enabled = true; this.lbl_ShowAllUserInfo.Text = "验证完所有用户数据"; //提示 }); thShow.IsBackground = true; thShow.Start(); } catch (Exception ex) { this.btn_CheckAllUserInfo.Enabled = true; Logger.LoadData(@"CheckOneRedisUserAssetInfo\Error.txt", $"验证所有用户数据发生异常{ex.Message}"); } }