public void Analysis(int intervalRate, int termMinCount, int termMaxCount) { try { //_intervalRatePrizeList.Clear(); var termCount = termMinCount; timer.Tick += new EventHandler(DrawView); // Everytime timer ticks, timer_Tick will be called timer.Interval = (1000) * (5); // Timer will tick evert second timer.Enabled = true; // Enable the timer timer.Start(); // Start the timer var mainAnalysisThread = new Thread(() => { while (termCount <= termMaxCount) { lock (_analysisThreads) { var currentTermCount = termCount; int count = termCount; var newThread = new Thread(() => { using (var ssqdbentities = new ssqdbEntities()) { var totalTermInfos = ssqdbentities.TotalTermInfos.Where(w => w.TermNum <= _chooseMaxTermNum).OrderByDescending(k => k.TermNum).ToList(); var intervalRateViewModel = Calculate(totalTermInfos, currentTermCount); var numberMappingToUse = ssqdbentities.NumberMapping.Take(count); var forecast = GetNumsFromTermsAndPositions(numberMappingToUse); var forecastStr = forecast.Aggregate("", (current, num) => current + (num + ",")); intervalRateViewModel.NextTermNumForecast = forecastStr.TrimEnd(','); lock (_intervalRatePrizeList) { _intervalRatePrizeList.Add(intervalRateViewModel); } } }) { IsBackground = true }; _analysisThreads.Add(newThread); newThread.Start(); while (_analysisThreads.Count >= _maxThreads) { Thread.Sleep(5000); } termCount += intervalRate; } } }); mainAnalysisThread.Start(); } catch (Exception e) { MessageBox.Show(e.Message); } }
private IntervalRateViewModel Calculate(List <TotalTermInfos> totalTermInfos, int termCount) { using (var ssqdbentities = new ssqdbEntities()) { var isPrizeList = new List <Boolean>(); var maxRecursionTermsPerJob = ConvertHelper.ConvertInt((_mainForm.Controls["MaxRecursionTermsPerJob"] as TextBox).Text); maxRecursionTermsPerJob = maxRecursionTermsPerJob > totalTermInfos.Count - termCount ? totalTermInfos.Count : maxRecursionTermsPerJob; for (int j1 = 0; j1 < maxRecursionTermsPerJob; j1++) { var term = totalTermInfos[j1]; var baseNums = new int[7] { ConvertHelper.ConvertInt(term.RedNum1), ConvertHelper.ConvertInt(term.RedNum2), ConvertHelper.ConvertInt(term.RedNum3), ConvertHelper.ConvertInt(term.RedNum4), ConvertHelper.ConvertInt(term.RedNum5), ConvertHelper.ConvertInt(term.RedNum6), ConvertHelper.ConvertInt(term.BlueNum) }; var numberMappingToUse = ssqdbentities.NumberMapping.Where(k => k.TermNum < term.TermNum).Take(termCount); if (numberMappingToUse.Count() < termCount) { break; } var compareNums = GetNumsFromTermsAndPositions(numberMappingToUse); var isPrize = ConvertHelper.IsPrize(compareNums, baseNums); isPrizeList.Add(isPrize); ConvertHelper.ShowMessage(_mainForm.Controls["ProgressingMessage"], string.Format("TermCount:{0};CurrentTerm:{1};isPrize{2}", termCount, j1 + ":" + term.TermNum, isPrize)); } if (isPrizeList.Count > 0) { var winningCount = isPrizeList.Count(k => k); var intervalRateViewModel = new IntervalRateViewModel { TermNum = totalTermInfos.First().TermNum, MaxRecursionTermsThisJob = maxRecursionTermsPerJob, PreviousTermsNum = termCount, WinningRate = (winningCount * 100 / isPrizeList.Count()) }; ConvertHelper.ShowMessage(_mainForm.Controls["ProgressingMessage"], string.Format("TermNum{0};PreviousTermsNum{1};WinningRate{2}" , intervalRateViewModel.TermNum, intervalRateViewModel.PreviousTermsNum, intervalRateViewModel.WinningRate)); return(intervalRateViewModel); } else { return(null); } } }
public void InitialNewestNumberMappingData() { using (var ssqdbentities = new ssqdbEntities()) { try { ssqdbentities.Database.ExecuteSqlCommand("Insert into NumberMapping select * from UV_NumberMapping where UV_NumberMapping.TermNum>(select max(NumberMapping.TermNum) from NumberMapping)"); } catch (Exception e) { MessageBox.Show(e.Message); } } }
public InitialDbData() { using (var ssqdbentities = new ssqdbEntities()) { try { numberMappings = ssqdbentities.NumberMapping.OrderByDescending(m => m.TermNum).ToList(); } catch (Exception e) { MessageBox.Show(e.Message); } } }
public void InitialAllNumberMappingData() { using (var ssqdbentities = new ssqdbEntities()) { try { ssqdbentities.Database.ExecuteSqlCommand("Delete from NumberMapping"); ssqdbentities.Database.ExecuteSqlCommand("Insert into NumberMapping select * from UV_NumberMapping"); } catch (Exception e) { MessageBox.Show(e.Message); } } }
public void ComboBoxTermBinding(ComboBox termComboBox) { using (var ssqdbentities = new ssqdbEntities()) { try { termComboBox.DataSource = numberMappings.ToList(); termComboBox.DisplayMember = "TermNum"; termComboBox.ValueMember = "TermNum"; } catch (Exception e) { MessageBox.Show(e.Message); } } }
public void UpdateNewest() { using (var ssqdbentities = new ssqdbEntities()) { var currentMaxTermNum = ssqdbentities.TotalTermInfos.Max(m => m.TermNum); var newestTermInfos = ReadCsv(currentMaxTermNum); if (newestTermInfos.Count > 0) { foreach (var totalTermInfo in newestTermInfos) { ssqdbentities.TotalTermInfos.Add(totalTermInfo); //ssqdbentities.Set<TotalTermInfos>(); //ssqdbentities.ChangeTracker.Entries(); } ssqdbentities.SaveChanges(); } } }