public void TaskManager_WithCancellation_Test() { // create manager and add tasks var manager = new TaskManager(); manager.Changed += (s, e) => ReportAction(e); manager.Add("task1", ct => Thread.Sleep(500), 100); manager.Add("task2", ct => Thread.Sleep(500), 50); // stagger start tasks manager.Start("task1"); // schedule a cancellation in 2.5 to 5 seconds var cancelTask = Task.Factory.StartNew(() => { var random = new Random(); Thread.Sleep(random.Next(2500, 5000)); manager.Cancel(); }); Thread.Sleep(2000); manager.Start("task2"); Thread.Sleep(3000); // stop tasks manager.Stop(); // wait for completion (only in unit tests) manager.Wait(); // wait for completion of cancellation task cancelTask.Wait(); }
public void TaskManager_Test() { // create manager and add tasks var manager = new TaskManager(); manager.Changed += (s, e) => ReportAction(e); manager.Add("task1", ct => Thread.Sleep(500), 100); manager.Add("task2", ct => Thread.Sleep(500), 50); // stagger start tasks manager.Start("task1"); Thread.Sleep(2000); manager.Start("task2"); Thread.Sleep(3000); // stop tasks manager.Stop(); // wait for completion (only in unit tests) manager.Wait(); }
private void TestBatchPrint(List<LabelFormatDocument> allBarcodeLabels) { // Initialize a new TaskManager object. using (TaskManager btTaskManager = new TaskManager()) { // Start a task engine. btTaskManager.Start(1); // Create a group task. GroupTask groupTask = new GroupTask(); List<BarcodeEntity> barcode = BusinessLogic.GetBarcodeDetails(txtQuoteNumber.Text); if (barcode == null) { Helper.ShowErrorMessageBox("No data found for printing barcode!"); return; } foreach (LabelFormatDocument currentLabel in allBarcodeLabels) { groupTask.Add(new PrintLabelFormatTask(currentLabel)); } // Add two printing tasks to the group task. //groupTask.Add(new PrintLabelFormatTask(@"C:\Format2.btw")); // Execute the tasks asynchronously for performance. btTaskManager.TaskQueue.QueueTask(groupTask); // Stop the task engine. // Ten second timeout gives tasks time to finish. btTaskManager.Stop(10000, true); } }