private void Analyze(ref StatisticFigure s) { NpgsqlConnection lclConn = null; try { string strSql; NpgsqlCommand cmd; lclConn = analyzer.DbMgr.Conn.CloneWith(analyzer.DbMgr.Conn.ConnectionString); lclConn.Open(); switch (s.type) { case StatisticFigureType.Mean: strSql = String.Format(@"SELECT AVG({0}) FROM {1}", s.parameters[0], analyzer.DbMgr.Currtable); cmd = new NpgsqlCommand(strSql, lclConn); s.value = (double)cmd.ExecuteScalar(); break; case StatisticFigureType.Variance: strSql = String.Format(@"SELECT VAR_POP({0}) FROM {1}", s.parameters[0], analyzer.DbMgr.Currtable); cmd = new NpgsqlCommand(strSql, lclConn); s.value = (double)cmd.ExecuteScalar(); break; case StatisticFigureType.StandardDeviation: strSql = String.Format(@"SELECT STDDEV_POP({0}) FROM {1}", s.parameters[0], analyzer.DbMgr.Currtable); cmd = new NpgsqlCommand(strSql, lclConn); s.value = (double)cmd.ExecuteScalar(); break; case StatisticFigureType.Covariance: strSql = String.Format(@"SELECT COVAR_POP({0}, {1}) FROM {2}", s.parameters[1], s.parameters[0], analyzer.DbMgr.Currtable); cmd = new NpgsqlCommand(strSql, lclConn); s.value = (double)cmd.ExecuteScalar(); break; case StatisticFigureType.CorrelationCoefficient: strSql = String.Format(@"SELECT CORR({0}, {1}) FROM {2}", s.parameters[1], s.parameters[0], analyzer.DbMgr.Currtable); cmd = new NpgsqlCommand(strSql, lclConn); s.value = (double)cmd.ExecuteScalar(); break; } Interlocked.Increment(ref finishedTask); } catch (Exception exe) { MessageBox.Show(exe.Message); } finally { if (lclConn != null) { lclConn.Close(); } } }
private void btAdd_Click(object sender, EventArgs e) { StatisticFigure s = new StatisticFigure(); s.type = (StatisticFigureType)cbStatType.SelectedItem; if (cbSrc2.Visible) { s.parameters = new string[] { (string)cbSrc1.SelectedItem, (string)cbSrc2.SelectedItem }; } else { s.parameters = new string[] { (string)cbSrc1.SelectedItem }; } tbStatNeedsAnalyze.Items.Add(s); }
private void btStart_Click(object sender, EventArgs e) { allTask = tbStatNeedsAnalyze.Items.Count; if (allTask < 1) { return; } isReportReady = false; tbReport.Clear(); finishedStats.Clear(); finishedTask = 0; btSave.Enabled = false; btStart.Enabled = false; btStart.Text = "Analyzing..."; btAdd.Enabled = false; btRemove.Enabled = false; progressTimer.Start(); sw = Stopwatch.StartNew(); Task AnalyzeTk = Task.Run(() => { isTaskRunning = true; try { Parallel.For(0, allTask, index => { StatisticFigure s = (StatisticFigure)tbStatNeedsAnalyze.Items[index]; Analyze(ref s); finishedStats.Add(s); }); isReportReady = true; isTaskRunning = false; } catch (Exception exc) { MessageBox.Show(exc.Message); isReportReady = false; } finally { isTaskRunning = false; } }); }