private static async Task RunOptionsAsync()

in code/KustoCopyConsole/Program.cs [113:154]


        private static async Task RunOptionsAsync(CommandLineOptions options)
        {
            ConfigureTrace(options.Verbose);

            var cancellationTokenSource = new CancellationTokenSource();
            var taskCompletionSource = new TaskCompletionSource();
            var parameterization = MainJobParameterization.FromOptions(options);

            AppDomain.CurrentDomain.ProcessExit += (e, s) =>
            {
                Trace.TraceInformation("Exiting process...");
                cancellationTokenSource.Cancel();
                taskCompletionSource.Task.Wait();
            };
            Trace.WriteLine("");
            Trace.WriteLine("Parameterization:");
            Trace.WriteLine("");
            Trace.WriteLine(parameterization.ToYaml());
            Trace.WriteLine("");
            try
            {
                await using (var mainRunner = await MainRunner.CreateAsync(
                    new Version(AssemblyVersion),
                    parameterization,
                    $"KUSTO-COPY;{AssemblyVersion}",
                    cancellationTokenSource.Token))
                {
                    Trace.WriteLine("Processing...");
                    Trace.WriteLine("");
                    await mainRunner.RunAsync(cancellationTokenSource.Token);
                }
            }
            catch(Exception)
            {
                await cancellationTokenSource.CancelAsync();
                throw;
            }
            finally
            {
                taskCompletionSource.SetResult();
            }
        }