示例#1
0
        /// <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}");
            }
        }