диспетчер последовательности задач на основе c # для Unity3D - PullRequest
3 голосов
/ 27 марта 2012

Примечание: этот вопрос должен был быть написан на https://gamedev.stackexchange.com/, поскольку он относится к разработке Unity3D (ничего общего с c # Unity Framework)

Мне нужно простое (однопотоковая) библиотека, которая позволяет запускать последовательности асинхронных задач, которые могут длиться с течением времени (обычно с использованием yield).

в ActionScript Я использовал http://www.dpdk.nl/opensource/running-tasks-in-order-with-a-task-based-sequence-manager, который был отличным секвенсором задач.

Есть ли что-то похожее в c #?

Примечание: хотя класс system.threading.task изначально казался хорошим решением, Unity 3.5 не поддерживает .net framework 4. Версия, которую я могу использовать,3.5.Есть ли альтернативы?

Ответы [ 2 ]

4 голосов
/ 27 марта 2012

Вы хотите взглянуть на Task Parallel Library . Эта библиотека может использоваться для многопоточности или нет, поэтому она достаточно надежна. Фактически, это то, на чем строится следующая версия ключевых слов * .NET async/await. Вскоре я напишу небольшой фрагмент кода.

var task = Task.Factory.StartNew<String>(
               ()=>
               {
                   //Do some long running task
                   return "Here are my results from part 1";
               })
           .ContinueWith<Int32>(
               (previousTask)=>
               {
                   var previousResult = previousTask.Result;
                   //Do some other long running task using the previous result
                   return 1;
               }); 

Есть много, что вы можете сделать с TPL. Это всего лишь общая идея.

Также для итераторов есть ключевое слово yield , но оно не обязательно асинхронное.

3 голосов
/ 17 октября 2012

В конце концов я создал свою собственную систему, я написал об этом здесь: http://www.sebaslab.com/svelto-taskrunner-run-serial-and-parallel-asynchronous-tasks-in-unity3d/

...