using System;
using System.Threading;
using System.Collections.Generic;
using System.Text;

namespace AbortThreads
{
   class Program
   {
      static void Main(string[] args)
      {
         Thread.CurrentThread.Name = "GŁÓWNY";
         PrintMessage("Aplikacja uruchomiona.");
         Thread worker = new Thread(new ThreadStart(DoWork));
         worker.Name = "WYKONAWCA";
         worker.Start();
         Console.WriteLine("Naciśnij Enter, aby przerwać wątek!");
         Console.ReadLine();
         worker.Abort();
         Console.WriteLine("Wysłano sygnał przerwania wątku.");
         Console.ReadLine();
      }

      static void PrintMessage(string msg)
      {
         Console.WriteLine("[{0}] {1}", Thread.CurrentThread.Name, msg);
      }

      static void DoWork()
      {
         try
         {
            while (true)
            {
               Console.Write("...");
               Thread.Sleep(100);   // krótki przedział czasu, aby zasymulować rzeczywistą pracę
            }
         }
         catch (Exception e)
         {
            PrintMessage("Przechwycono: " + e.ToString());
         }
      }
   }
}
