using System; using System.Threading; using System.Threading.Tasks; namespace CommonConsole { public class Program { public static void Main() { var cancelationTokenSource = new CancellationTokenSource(); var cancelationToken = cancelationTokenSource.Token; var manualResetEventSlim = new ManualResetEventSlim(); void LongRunningTask() { Console.WriteLine("started"); manualResetEventSlim.Wait(3000, cancelationToken); Console.WriteLine("stoped"); } Task.Factory.StartNew(LongRunningTask); while (true) { var consoleKey = Console.ReadKey().Key; if (consoleKey == ConsoleKey.X) { cancelationTokenSource.Cancel(); } else if (consoleKey == ConsoleKey.C) { break; } Console.WriteLine(); } } } }