private void RunSampleCode() { SetActiveSheet(); int noOfRuns = 50; int noOfThreads = 5; int noOfIteractionsPerThread = 10; System.Windows.Forms.MessageBox.Show("Starting MultiThreaded write job, writing " + noOfRuns + " cells."); _activeSheet.Cells[1, 1] = "MultiThread Write BatchID"; _activeSheet.Cells[1, 2] = "MultiThread Write IndexID"; _activeSheet.Cells[1, 3] = "MultiThread Write IndexCalculation"; _activeSheet.Cells[1, 4] = "MultiThread Write Search State"; _activeSheet.Cells[1, 5] = "MultiThread Write BatchTime (Start/End)"; _activeSheet.Cells[1, 6] = "SingleThread Read BatchID"; _activeSheet.Cells[1, 7] = "SingleThread Read IndexID"; _activeSheet.Cells[1, 8] = "SingleThread Write IndexCalculation"; _activeSheet.Cells[1, 9] = "SingleThread Read Search State"; _activeSheet.Cells[1, 10] = "SingleThread Read BatchTime (Start/End)"; MultiThreadWriteJob(noOfRuns, noOfThreads, noOfIteractionsPerThread); long jobExecCount = 0; while (jobExecCount < noOfRuns) { if (_mut.WaitOne()) { // System.Windows.Forms.MessageBox.Show("Read job, jobExecCount:" + jobExecCount.ToString()); jobExecCount = ThreadData.GetJobExecWaitCount(); _mut.ReleaseMutex(); } } if (_mut.WaitOne()) { System.Windows.Forms.MessageBox.Show("Starting SingleThreaded read job, reading " + noOfRuns + " cells."); _mut.ReleaseMutex(); } //reset and start read job jobExecCount = 0; ThreadData.ResetJobExecWaitCount(); SingleThreadWriteJob(noOfRuns, noOfThreads, noOfIteractionsPerThread); _activeSheet.Cells[noOfRuns + 2, 5] = "=MIN(E2:E" + (noOfRuns + 1).ToString() + ")"; _activeSheet.Cells[noOfRuns + 3, 5] = "=MAX(E2:E" + (noOfRuns + 1).ToString() + ")"; _activeSheet.Cells[noOfRuns + 4, 4] = "Run Time in milliseconds:"; _activeSheet.Range[_activeSheet.Cells[noOfRuns + 4, 4], _activeSheet.Cells[noOfRuns + 4, 4]].HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignRight; _activeSheet.Cells[noOfRuns + 4, 5] = "=(E" + (noOfRuns + 3).ToString() + "-E" + (noOfRuns + 2).ToString() + ")*24*60*60*1000"; _activeSheet.Cells[noOfRuns + 5, 4] = "Run Time in seconds:"; _activeSheet.Range[_activeSheet.Cells[noOfRuns + 5, 4], _activeSheet.Cells[noOfRuns + 5, 4]].HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignRight; _activeSheet.Cells[noOfRuns + 5, 5] = "=(E" + (noOfRuns + 3).ToString() + "-E" + (noOfRuns + 2).ToString() + ")*24*60*60"; _activeSheet.Cells[noOfRuns + 2, 10] = "=MIN(J2:J" + (noOfRuns + 1).ToString() + ")"; _activeSheet.Cells[noOfRuns + 3, 10] = "=MAX(J2:J" + (noOfRuns + 1).ToString() + ")"; _activeSheet.Cells[noOfRuns + 4, 9] = "Run Time in milliseconds:"; _activeSheet.Range[_activeSheet.Cells[noOfRuns + 4, 9], _activeSheet.Cells[noOfRuns + 4, 9]].HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignRight; _activeSheet.Cells[noOfRuns + 4, 10] = "=(J" + (noOfRuns + 3).ToString() + "-J" + (noOfRuns + 2).ToString() + ")*24*60*60*1000"; _activeSheet.Cells[noOfRuns + 5, 9] = "Run Time in seconds:"; _activeSheet.Range[_activeSheet.Cells[noOfRuns + 5, 9], _activeSheet.Cells[noOfRuns + 5, 9]].HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignRight; _activeSheet.Cells[noOfRuns + 5, 10] = "=(J" + (noOfRuns + 3).ToString() + "-J" + (noOfRuns + 2).ToString() + ")*24*60*60"; _activeSheet.Cells.Columns.AutoFit(); _activeSheet.Cells.Rows.AutoFit(); _activeSheet.Range[_activeSheet.Cells[1, 1], _activeSheet.Cells[1, 10]].EntireRow.Font.Bold = true; System.Windows.Forms.MessageBox.Show("All jobs completed."); }