public AsyncProcessorThread() { try { ID = GetNextIDToProcess(); ProcDetails.SingleOrDefault(z => z.ID == ID).Begin(); AsyncProcessorDetail fd = ProcDetails.SingleOrDefault(z => z.ID == ID); // Add a case statement for each of the processor classes you create switch (fd.ProcessorType) { case "ProcessorImportCsv": ProcessorImportCsv ImportDataCSV = new ProcessorImportCsv(fd); break; case "ProcessorImportXls": ProcessorImportXls ImportDataXLS = new ProcessorImportXls(fd); break; case "ProcessorImportJson": ProcessorImportJson ImportDataJSON = new ProcessorImportJson(fd); break; case "ProcessorImportXML": ProcessorImportXml ImportDataXML = new ProcessorImportXml(fd); break; case "ProcessorImportTable": ProcessorImportTable ImportDataTable = new ProcessorImportTable(fd); break; default: ProcDetails.SingleOrDefault(z => z.ID == ID).StatusText = "No ProcessorType found. Exiting.."; ProcDetails.SingleOrDefault(z => z.ID == ID).End(); break; } } catch (Exception ex) { } }
public static int StartAsyncProcess(AsyncProcessorDetail input_detail) { if (ProcDetails == null) { ProcDetails = new List <AsyncProcessorDetail>(); } bool error = false; foreach (AsyncProcessorDetail detail in ProcDetails) { if (detail.ID == input_detail.ID) { // task is already being processed if (detail.Processing) { error = true; } } } if (!error) { // removing any existing instances of this detail in the list ProcDetails.RemoveAll(z => z.ID == input_detail.ID); // Add the detail to the list ProcDetails.Add(input_detail); // Start processor thread Thread processorThread = new Thread(new ThreadStart(StartProcessorThread)); processorThread.IsBackground = false; processorThread.Start(); return(0); } else { return(1); } }
public ProcessorImportXls(AsyncProcessorDetail processor_detail) { ProcessorDetail = processor_detail; Process(); }