Библиотека параллельных задач может быть именно тем, что вы ищете.
Я думаю, что ваш редактор на основе узлов перетаскивания выглядит такэто:
Каждый узел по сути является Задачей .Задача может быть чем угодно - считывать файл с диска, загружать некоторые данные из Интернета или вычислять что угодно.
Когда задача завершена, она может ContinueWith с одной или несколькими другими задачами., передавая результат старой Задачи новым Задачам.
Задача также может состоять из ожидания завершения нескольких Задач. Когда все эти задачи завершены, эта задача может продолжаться с другой задачей, передавая результат всех задач новой задаче.
TPL планирует все эти задачив пуле потоков, поэтому потоки можно использовать повторно, и у каждой задачи не должно быть своего собственного потока.TPL найдет оптимальное количество потоков для системы, в которой он работает.
Visual Studio Async CTP добавляет поддержку родного языка для асинхронных операций в C #, что делает работу с Задачами действительнопросто и весело.
С TPL это просто вопрос создания Задач и их составления в соответствии с расположением узла.
Полный программный код для приведенного выше примера:
var t1 = Task.Factory.StartNew<int>(() => 42);
var t2a = t1.ContinueWith<int>(t => t.Result + 1);
var t2b = t1.ContinueWith<int>(t => t.Result + 1);
var t3a = t2a.ContinueWith<int>(t => t.Result * 2);
var t3b = t2b.ContinueWith<int>(t => t.Result * 3);
var t4 = TaskEx.WhenAll<int>(t3a, t3b)
.ContinueWith<int>(t => t.Result[0] + t.Result[1]);
t4.ContinueWith(t => { Console.WriteLine(t.Result); });
Console.ReadKey();