private static void ProcessCsvRealTime( string fileName, string queryFile, string consoleLogOption, string outputFileName, string blobConnectionString, string blobContainerName, KustoConnectionStringBuilder kscbAdmin, KustoConnectionStringBuilder kscbIngest, bool directIngest, string tableName, bool resetTable) { BlockingKustoUploader ku = null; FileOutput fileOutput = null; ConsoleOutput consoleOutput = null; // initiating simple csv reader SimpleCsvParser simpleCsvParser = new SimpleCsvParser(fileName); // initiating output if (kscbAdmin != null) { // output to kusto ku = CreateUploader(UploadTimespan, blobConnectionString, blobContainerName, kscbAdmin, kscbIngest, directIngest, tableName, resetTable); Task task = Task.Factory.StartNew(() => { RunUploader(ku, simpleCsvParser, queryFile); }); } else if (!string.IsNullOrEmpty(outputFileName)) { // output to file fileOutput = new FileOutput(outputFileName); RunFileOutput(fileOutput, simpleCsvParser, queryFile); } else { // output to console bool tableFormat = consoleLogOption == "table" ? true : false; consoleOutput = new ConsoleOutput(tableFormat); RunConsoleOutput(consoleOutput, simpleCsvParser, queryFile); } // starting simple csv reader simpleCsvParser.Start(); string readline = Console.ReadLine(); // clean up simpleCsvParser.Stop(); if (kscbAdmin != null) { ku.OnCompleted(); } else if (!string.IsNullOrEmpty(outputFileName)) { fileOutput.OnCompleted(); } else { consoleOutput.OnCompleted(); } }