static void MainAsync(string[] args) { var serviceCollection = new ServiceCollection(); ConfigureServices(serviceCollection); var serviceProvider = serviceCollection.BuildServiceProvider(); FlightDataProcessor = serviceProvider.GetService <IEventProcessor>(); InitializeFileSystemWatcher(); //Initialzie for first round BufferBlock = FlightDataProcessor.GetBufferBlock(); //Pass the buffer block to Pipeline mesh DataTransformerBlock = FlightDataProcessor.Process(BufferBlock); Timer timer = new Timer(new TimerCallback(Timer_CallBack), null, 2000, 5000); Console.WriteLine(" =========================Consumer has started==============================="); Console.WriteLine($"========Raw folder path is '{PathUtility.RawFolder}'"); Console.WriteLine($"========Exception folder path is '{PathUtility.ExceptionFolder}'"); Console.WriteLine($"========Curated folder path is '{PathUtility.CuratedFolder}'"); Console.WriteLine($"========Log folder path is '{PathUtility.LogFolder}'"); Console.WriteLine($"==========Program is observing the input folder {PathUtility.InputFolder}"); while (true) { //Thread cancellation token is missing } }
private static void Timer_CallBack(object state) { var files = Queue; Queue = new BlockingCollection <string>(); BufferBlock.Post(new List <string>(files)); BufferBlock.Complete(); DataTransformerBlock.Wait(); BufferBlock = FlightDataProcessor.GetBufferBlock(); DataTransformerBlock = FlightDataProcessor.Process(BufferBlock); }