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

namespace TaskParallel
{
    class Program
    {
        static void Main(string[] args)
        {
             var t1 = Task.Factory.StartNew(() => Proceso1(1, 1500));
            var t2 = Task.Factory.StartNew(() => Proceso1(2, 3000));            
            var t3 = Task.Factory.StartNew(() => Proceso1(3, 1000));

            Console.WriteLine("Presione una tecla para salir");
            Console.ReadKey();
        }
        static void Proceso1(int id, int sleepTime)
        {
            Console.WriteLine("Tarea {0} Iniciada", id);
            Thread.Sleep(sleepTime);
            Console.WriteLine("Tarea {0} Terminada", id);
        }
        static void Proceso2(int id, int sleepTime)
        {
            Console.WriteLine("Tarea {0} Iniciada del Proceso 2", id);
            Thread.Sleep(sleepTime);
            Console.WriteLine("Tarea {0} Terminada del Proceso 2", id);
        }
    }
}
Ejecutar y esperar a que termine otra tarea.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace TaskParallel
{
    class Program
    {
        static void Main(string[] args)
        {
            //Ejecutar y esperar a que termine otra tarea
            var t1 = Task.Factory.StartNew(() => Proceso1(1,1500)).ContinueWith((prevTask)=> Proceso2(1,1000));
            var t2 = Task.Factory.StartNew(() => Proceso1(2, 3000));            
            var t3 = Task.Factory.StartNew(() => Proceso1(3, 1000));

            //Ejecutar y esperar que terminen todas las tareas
            //var tasklist = new List<Task> { t1, t2, t3 };
            //Task.WaitAll(tasklist.ToArray());


            Console.WriteLine("Presione una tecla para salir");
            Console.ReadKey();
        }
        static void Proceso1(int id, int sleepTime)
        {
            Console.WriteLine("Tarea {0} Iniciada", id);
            Thread.Sleep(sleepTime);
            Console.WriteLine("Tarea {0} Terminada", id);
        }
        static void Proceso2(int id, int sleepTime)
        {
            Console.WriteLine("Tarea {0} Iniciada del Proceso 2", id);
            Thread.Sleep(sleepTime);
            Console.WriteLine("Tarea {0} Terminada del Proceso 2", id);
        }
    }
}