Внутри while playing
вы должны очистить экран - т.е. screen.fill( (0,0,0) )
прежде чем рисовать все элементы. Таким образом, вы получите анимацию выбранного элемента в меню.
Вместо fill()
вы также можете blit()
добавить некоторое изображение / фон, который удалит все элементы.
Я посмотрел бы на Параллельные Расширения, это разрабатывается Microsoft.
Если просто необходимо обработать наборы данных параллельно, ParallelFX очень удобны. Они вынут много боли из выполнения его вручную в C#.
Но если код имеет много асинхронного кода, асинхронная монада F# делает его значительно легче, чем можно сделать в C#. Если Вы посмотрите на большое количество BeginXXX/EndXXX или страшного кода XXXAsync/XXXCompletedEvent, то F# будет главной победой.
Иначе у Вас просто будут общие усиления F# по C#.
существует два способа сделать вещи параллелью, они оба работают очень хорошо в F#.
Как Josh уже упомянул, существует библиотека Parallel Extensions. Это делает чрезвычайно легким параллелизировать обработку некоторых структур данных - особенно неизменные структуры данных, которые Вы будете часто использовать в F#. Так, объединение Расширений Парааллели с F# является правильным способом пойти. Это будет обсуждено в моей предстоящей реальной книге F#, но я делаю исходный код доступным. Это охвачено в главе 14, и источник для нее должен скоро быть доступным.
Для некоторых проблем можно использовать параллелизм передачи сообщений, который является привлекательной альтернативой общей памяти. Можно найти некоторую информацию об этом в бесплатной главе из книги Don Syme. Это будет охвачено в моей книге также (Глава 13 и 16).
Путем объединения параллелизма передачи сообщений с асинхронными рабочими процессами можно получить отличный способ для записи программ, которые не могут быть легко параллелизированы с помощью Параллельных расширений (т.е. они должны поделиться некоторой информацией и также использовать асинхронные операции неблокирования (такие как загрузка с Интернета)),
Согласно этой демонстрации Luca Bolognese, простота реализации параллелизма является одной из более сильных точек F#. Приблизительно в 53-минутной метке на это становится довольно впечатляющим. Надежда это помогает немного. http://channel9.msdn.com/pdc2008/TL11/
F# главным образом свободен от побочных эффектов так да, но Вы не хотели бы реализовывать UI в нем. На обороте будет большая параллельная функциональность, встроенная к следующей версии C# через LINQ.
Необходимо будет также взвесить учебные требования и то, что F# еще не является RTM и не будет до конца этого года.
F# делает определенные подходы лучше (например, собственная поддержка сообщения), но можно сделать это в C#, если Вы минимизируете (или лучше, устраните), изменяемое состояние.
Как отмечено в других ответах, библиотеки.NET собираются получить большое повышение таким образом скоро с параллельными расширениями. Они будут иметь, однако, точно то же отсутствие масштабируемости, если Вы начнете использовать блокировки.