internal ScalingSequentialPipeline(PipelineContext context) { m_Pause = new ManualResetEvent(true); m_LatestPauseState = false; m_DummyProgress = new Progress <int>(); m_ActualProgress = new Progress <int>(); m_PauseSyncRoot = new object(); m_Context = context; m_LineBuffers = new List <BoundedConcurrentQueu <string> >(); m_RecordBuffers = new List <BoundedConcurrentQueu <object[]> >(); m_RowBuffers = new List <BoundedConcurrentQueu <Row> >(); if (context.SourceFilePath.Contains(".xls")) { m_ExcelReader = new ExcelDataExtractor(); } else { m_Reader = new DIALFlatFileExtractor(); m_StringSplitter = new StringSplitter(context.Qualifier) { Delimiter = context.Delimiter }; } m_RowBuilder = new RecordToRowTransformer(context.ColumnNames, context.IsSkippingError); m_Loader = new SQLTableLoader(); //register event m_ActualProgress.ProgressChanged += OnReaderEvent; }
public async Task <IActionResult> Index(EventCreateViewModel model, ICollection <IFormFile> files) { var uploads = Path.Combine(_environment.WebRootPath, "uploads"); foreach (IFormFile file in files) { if (file.Length > 0) { string[] paths = file.FileName.Split('\\'); string filePath = Path.Combine(uploads, paths[paths.Length - 1]); using (var fileStream = new FileStream(filePath, FileMode.Create)) { await file.CopyToAsync(fileStream); await fileStream.FlushAsync(); ExcelDataExtractor dataExtractor = new ExcelDataExtractor(); dataExtractor.Source = filePath; dataExtractor.DBcontext = ApplicationDbContext.GetDbContext(); Event e = new Event(model.EventName, dataExtractor); e.EndDate = model.EndDate; e.StartDate = model.StartDate; e.Theme = model.Theme; e.Place = model.Venue; e.MingleAttendees = false; e.Fee = model.Fee; e.Type = EventTypeEnum.GRANDE_RETRAITE; e.Persist(); Thread t = new Thread(() => ProcessEvent(e, dataExtractor.Source)); t.Start(); } } } return(View()); }