.NETフレームワークは4.0です。
コンソールアプリケーションで以下のメソッドを実行すると、Convert内のProcess.Startで処理が停止してしまいます(例外の発生ではなく、次に進まなくなる)。
また、Process.Startでの外部アプリケーションの呼び出しには成功していて、タスクマネージャから確認すると処理も終わっています。
このメソッドをWindowsFormアプリケーションから呼び出すと、正常に終了します。

public CancellationTokenSource ConvertAsync<T>(object obj,string[] files,Listener listener){
    var cancellation = new CancellationTokenSource();
    var task = new Task(
        ()=>{
             try{
                Task convertedTask = null;
                Action<object> action = new Action<object>((obj) => {
                    try{                                                    
                        listener.oneFile(obj);
                        return;
                    } catch (Exception ex2) {
                        Debug.WriteLine(ex2);
                        return;
                }});
                foreach (var file in files) {

                    if(cancellation.IsCancellationRequested)return;
                    Debug.WriteLine("before:"+file);
                    var converted =Convert(obj,file);/* <-ここでProcess.Start()呼び出し*/
                    Debug.WriteLine("after:"+converted);
                    if(converted==null)break;

                    if(convertedTask==null){
                        convertedTask = new Task(action,ab,cancellation.Token);
                        convertedTask.Start();
                    }else{
                        convertedTask = convertedTask.ContinueWith((arg) => action(converted),cancellation.Token);
                    }
                }
                if(convertedTask!=null)convertedTask.Wait();
                listener.allDone();
            }catch(Exception ex){
                Debug.WriteLine(ex);
                return;
            }

    },cancellation.Token);
    task.Start();
    return cancellation;
}

以上、ご教授いただければ幸いです。よろしくお願いいたします。