private void BgCancelTrace_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { ProfilerTraceStatusTextBox.AppendText("\r\nDropped trace database and deleted files successfully.\r\nTrace file is not yet imported to database table for analysis. Import to perform analysis.\r\n"); AnalysisMessagePumpTimer.Stop(); tbCollection.ForeColor = SystemColors.ControlText; tcCollectionAnalysisTabs.Refresh(); tbCollection.Enabled = true; btnAnalysisFolder.Enabled = true; btnImportProfilerTrace.Enabled = true; btnImportProfilerTrace.Text = "Import and &Analyze"; }
private void bgImportProfilerTraceComplete(object sender, RunWorkerCompletedEventArgs e) { Debug.WriteLine("Import Trace Complete"); if (!bCancelProfilerImport) // We take care of cleanup and completion in cancellation worker if we're cancelled. { if (File.Exists(m_analysisPath + "\\Analysis\\" + AnalysisTraceID + ".mdf")) { btnImportProfilerTrace.Visible = false; splitProfilerAnalysis.Visible = true; } tbCollection.ForeColor = SystemColors.ControlText; tcCollectionAnalysisTabs.Refresh(); tbCollection.Enabled = true; btnAnalysisFolder.Enabled = true; btnImportProfilerTrace.Enabled = true; btnImportProfilerTrace.Text = "Import and &Analyze"; LogFeatureUse("Profiler Analysis", "Completed"); AnalysisMessagePumpTimer.Stop(); } }
private void btnImportProfilerTrace_Click(object sender, EventArgs e) { if (btnImportProfilerTrace.Text == "Import and &Analyze") { bCancelProfilerImport = false; tbCollection.ForeColor = SystemColors.ControlDark; tcCollectionAnalysisTabs.Refresh(); tbCollection.Enabled = false; btnAnalysisFolder.Enabled = false; btnImportProfilerTrace.Text = "&Cancel Import"; LogFeatureUse("Profiler Analysis", "Started"); if (!ValidateProfilerTraceDBConnectionStatus()) { tbCollection.ForeColor = SystemColors.ControlText; tcCollectionAnalysisTabs.Refresh(); tbCollection.Enabled = true; btnAnalysisFolder.Enabled = true; btnImportProfilerTrace.Enabled = true; btnImportProfilerTrace.Text = "Import and &Analyze"; return; } AnalysisMessagePumpTimer.Interval = 1000; AnalysisMessagePumpTimer.Start(); try { BackgroundWorker bg = new BackgroundWorker(); bg.DoWork += bgImportProfilerTrace; bg.RunWorkerCompleted += bgImportProfilerTraceComplete; bg.RunWorkerAsync(new object[] { ProfilerTraceStatusTextBox, "Initial Catalog=" + AnalysisTraceID + ";Persist Security Info=False;" + connSqlDb.ConnectionString }); } catch (SqlException ex) { LogException(ex); if (ex.Message == "ExecuteNonQuery requires an open and available Connection. The connection's current state is closed.") { ProfilerTraceStatusTextBox.Text = "Trace file is not yet imported to database table for analysis. No SQL Server was available to perform import."; btnImportProfilerTrace.Visible = true; } else { ProfilerTraceStatusTextBox.Text = "Error loading profiler trace: \r\n" + ex.Message; } ProfilerTraceStatusTextBox.AppendText("\r\nImport trace to database failed. Dropping trace database..."); LogFeatureUse("Profiler Analysis", "Failed: " + ex.Message); BackgroundWorker bgCancelTrace = new BackgroundWorker(); bgCancelTrace.DoWork += BgCancelTrace_DoWork; bgCancelTrace.RunWorkerCompleted += BgCancelTrace_RunWorkerCompleted; bgCancelTrace.RunWorkerAsync(); } } else { bCancelProfilerImport = true; btnImportProfilerTrace.Enabled = false; ProfilerTraceStatusTextBox.AppendText("\r\nUser cancelled loading of trace to table. Dropping trace database..."); LogFeatureUse("Profiler Analysis", "User cancelled import"); BackgroundWorker bgCancelTrace = new BackgroundWorker(); bgCancelTrace.DoWork += BgCancelTrace_DoWork; bgCancelTrace.RunWorkerCompleted += BgCancelTrace_RunWorkerCompleted; bgCancelTrace.RunWorkerAsync(); } }