private void UpdateTab_Handler(AsyncTabPageEventArgs args) { if (this.InvokeRequired) { AsyncUpdateTab updateStatus = new AsyncUpdateTab(UpdateTab_Handler); this.Invoke(updateStatus, new object[] { args }); } else { if (args.RemoveTabs) { for (int index = tabCtlUploadStatus.TabCount - 1; index > 0; index--) { tabCtlUploadStatus.TabPages.RemoveAt(index); } } else if (!args.Show) { tabCtlUploadStatus.TabPages.Remove(_tabPages[args.CurrentTabIndex]); } else { _tabPages[args.CurrentTabIndex].Text = args.DisplayText; tabCtlUploadStatus.TabPages.Add(_tabPages[args.CurrentTabIndex]); } } }
public void ThreadManager() { AsyncTabPageEventArgs args = new AsyncTabPageEventArgs(0, ""); while (true) { for (int index = 0; index < _ta.Count(); index++) { args.CurrentTabIndex = index; if (_ta[index] != null) { if (_ta[index].ThreadState == System.Threading.ThreadState.Stopped) { BCPCommandCtrl par = (BCPCommandCtrl)_tabPages[index].Controls[0]; if (par.CurrentJobInfo.JobStatus == CommandStatus.Success || par.CurrentJobInfo.JobStatus == CommandStatus.Skip) { args.Show = false; UpdateTabHandler(args); _ta[index] = null; } } } args.Show = true; if (_ta[index] == null) { BCPJobInfo jobInfo = GetNextWaitingJob(); if (jobInfo != null) { args.DisplayText = jobInfo.TableName; args.CurrentTabIndex = index; jobInfo.CurrentThreadIndex = index; UpdateTabHandler(args); BCPCommandCtrl par = (BCPCommandCtrl)_tabPages[index].Controls[0]; par.CurrentJobInfo = jobInfo; ThreadStart ts = new System.Threading.ThreadStart(delegate() { StartUpload(par); }); _ta[index] = new Thread(ts); _ta[index].CurrentCulture = CultureInfo.CurrentCulture; _ta[index].CurrentUICulture = CultureInfo.CurrentUICulture; _ta[index].Start(); } } } Thread.Sleep(500); // Sleep for awhile and then look for more data to process if (AsyncProcessingStatus.FinishedAddingJobs && BCPJobsDone()) { break; } } args.RemoveTabs = true; UpdateTabHandler(args); AsyncProcessingStatus.FinishedProcessingJobs = true; }
public static void ThreadManager() { AsyncTabPageEventArgs args = new AsyncTabPageEventArgs(0, ""); while (true) { for (int index = 0; index < _ta.Count(); index++) { args.CurrentTabIndex = index; if (_ta[index] == null || _ta[index].ThreadState == ThreadState.Stopped) { BCPJobInfo jobInfo = GetNextWaitingJob(); if (jobInfo != null) { args.DisplayText = jobInfo.TableName; args.CurrentTabIndex = index; jobInfo.CurrentThreadIndex = index; BCPCommandCtrl bcc = new BCPCommandCtrl(); bcc.UpdateBCPJobStatus = new AsyncBCPJobUpdateStatus(BCPAsyncUpdateResultsHandler); bcc.CurrentJobInfo = jobInfo; _bcpWorkingCommand[index] = bcc; ThreadStart ts = new System.Threading.ThreadStart(delegate() { StartUpload(bcc); }); _ta[index] = new Thread(ts); _ta[index].CurrentCulture = CultureInfo.CurrentCulture; _ta[index].CurrentUICulture = CultureInfo.CurrentUICulture; _ta[index].Start(); } } } Thread.Sleep(500); // Sleep for awhile and then look for more data to process if (AsyncProcessingStatus.FinishedAddingJobs && BCPJobsDone()) { break; } } BCPAsyncUploadProcessDone(); AsyncProcessingStatus.FinishedProcessingJobs = true; }