static async Task Main(string[] args)
        {
            try
            {
                Stopwatch stopwatch = new Stopwatch();
                stopwatch.Start();

                Task cancelTask = Task.Run(() =>
                {
                    var totalSeconds = 600;

                    while (stopwatch.Elapsed.TotalSeconds < totalSeconds)
                    {
                        Thread.Sleep(TimeSpan.FromSeconds(1));

                        if (cancellationTokenSource.IsCancellationRequested)
                        {
                            return(Task.CompletedTask);
                        }

                        LogHelper.WriteLine($"Programın sonlanmasına {totalSeconds - stopwatch.Elapsed.TotalSeconds:F0} saniye kaldı!", ConsoleColor.Cyan);
                    }

                    cancellationTokenSource.Cancel();

                    return(Task.CompletedTask);
                }, cancellationTokenSource.Token);

                Task mainTask = Task.Run(() =>
                {
                    using (var announcementService = new AtsService())
                    {
                        announcementService.GetNewDefinitionsAndSendMail();
                    }

                    cancellationTokenSource.Cancel();

                    return(Task.CompletedTask);
                }, cancellationTokenSource.Token);

                var taskList = new List <Task> {
                    cancelTask,
                    mainTask
                };

                await Task.WhenAny(taskList);

                LogHelper.WriteLine($"Main Task IsCompleted: {mainTask.IsCompleted}", ConsoleColor.DarkMagenta);
                LogHelper.WriteLine($"Cancel Task IsCompleted: {cancelTask.IsCompleted}", ConsoleColor.DarkMagenta);

                LogHelper.WriteLine("İşlem bitti, kapanıyor....", ConsoleColor.Cyan);

                Process.GetProcesses().Where(pr => pr.ProcessName.Contains("phantom")).ToList().ForEach(x => x.Kill());
            }
            catch (Exception exception)
            {
                LogHelper.WriteLine(exception, null);
                LogHelper.WriteLine("Bir hata oluştu, kapanıyor....", ConsoleColor.Red);
            }

            await Task.Delay(TimeSpan.FromSeconds(5));
        }
Esempio n. 2
0
 public AtsController(AtsService atsService)
 {
     _atsService = atsService;
 }