private int Run()

in src/Program.cs [470:533]


        private int Run()
        {
            try
            {
                if (!m_args.Wamless)
                {
                    if (ExtendedEnvironment.IsWindows)
                    {
                        var hWnd = ExtendedConsole.GetConsoleWindowHandle();
                        AadInteractiveTokenCredentialProviderBase.WAMWindowPointer = hWnd;
                    }
                }

                // Setup the connection string: if database name argument is specified explicitly, it overrides the one provided in the connection string
                m_args.ConnectionString = WellKnownConnectionStrings.GetConnectionStringByAliasOrNull(m_args.ConnectionString) ?? m_args.ConnectionString;

                m_kcsb = CreateKcsbFromArgs();
                using (var adminClient = KustoClientFactory.CreateCslAdminProvider(m_kcsb))
                {
                    m_targetServiceType = GetTargetServiceType(adminClient);
                    m_engineKcsb = string.Equals(m_targetServiceType, KustoIngestionConstants.EngineClusterServiceType, StringComparison.OrdinalIgnoreCase)
                        ? m_kcsb
                        : GetEngineKcsb(adminClient);
                }

                m_dataFormat = ParseDataFormatFromArgs();
                m_additionalProperties = ParseAdditionalPropertiesFromArgs();
                m_tags = ParseTagsFromArgs();
                m_additionalArguments = ParseAdditionalArgumentsFromArgs();

                ValidateArgumentsCoherency();

                // Generate ingestion properties to be used for this session
                var ingestionProperties = CreateIngestionProperties();

                // Initialize our ingestor
                var ingestor = Ingestor.CreateFromCommandLineArgs(m_args, m_additionalArguments, ingestionProperties, m_logger);
                // Iterations == 1 + Repetitions. Negative values indicate infinite loop
                int iterations = (m_args.RepeatCount >= 0 ? m_args.RepeatCount + 1 : Int32.MaxValue);

                for (int i = 1; i <= iterations; i++)
                {
                    RunIngest(ingestor);

                    if (m_args.RepeatPauseInSeconds > 0 && i < iterations)
                    {
                        m_logger.LogInfo($"Pausing for {m_args.RepeatPauseInSeconds} seconds before next iteration");
                        Thread.Sleep(TimeSpan.FromSeconds(m_args.RepeatPauseInSeconds));
                    }
                }

                return 0;
            }
            catch (Exception ex)
            {
                m_logger.LogError(ex.Message);
                return 2;
            }
            finally
            {
                TraceSourceManager.SuperFlush();
                m_rollingCsvTraceListener2?.Dispose();
            }
        }