 <p>You can try and run an exception handler on the occurrence of exception. You can use a flag, I have used the exception for checking the exception occurence itself in the example:</p> <pre><code> private static AggregateException exception = null; static void Main(string[] args) { Console.WriteLine("Start"); Task.Factory.StartNew(PrintTime, CancellationToken.None).ContinueWith(HandleException, TaskContinuationOptions.OnlyOnFaulted); for (int i = 0; i &lt; 20; i++) { Console.WriteLine("Master Thread i={0}", i + 1); Thread.Sleep(1000); if (exception != null) { break; } } Console.WriteLine("Finish"); Console.ReadLine(); } private static void HandleException(Task task) { exception = task.Exception; Console.WriteLine(exception); } private static void PrintTime() { for (int i = 0; i &lt; 10; i++) { Console.WriteLine("Inner Thread i={0}", i + 1); Thread.Sleep(1000); } throw new Exception("exception"); } </code></pre>