Есть хорошие шаблоны асинхронного рабочего процесса для C # 4? - PullRequest
0 голосов
/ 30 июня 2011

Может кто-нибудь указать мне на некоторые шаблоны для обработки асинхронных рабочих процессов в C #?Я знаю, что это скоро произойдет в C # 5, но мне было интересно, если кто-нибудь уже сделал реализацию в C # 4, которая приближает те же эффекты?

В основном я пишу много асинхронного кода в Silverlight 4, как это:

CallService(
    (service) => service.DoSomething(1, 2, 3),
    (response) =>
    {
        // some local code

        // need to call another service async
        CallService(
            (service) => service.DoSomethingElse(4, 5, 6),
            (response) =>
            {
                // even more nested async calls, you get the idea...
            }
        )
    }
);

Вложенные обратные вызовы до меня.Мне очень нравится, как F # предоставляет асинхронные рабочие процессы для решения этой проблемы, так как вы в конечном итоге пишете код, который выглядит и чувствует себя синхронно, что я действительно хочу.

Ответы [ 4 ]

1 голос
/ 02 июля 2011

Вы можете попробовать использовать Caliburn Micro framework, который является платформой MVVM, но он также обеспечивает реализацию для сопрограмм - он позволяет вам вызывать асинхронные методы последовательным способом.

В общем, я настоятельно рекомендую вам ознакомиться со всей платформой Caliburn Micro.

Вы также можете узнать больше о сопрограммах в Блог Мэтта Гамильтона

1 голос
/ 30 июня 2011

Мы реализовали асинхронную библиотеку на основе следующего набора статей:

http://www.codeproject.com/KB/silverlight/ConsumingWCFServiceWithou.aspx http://www.codeproject.com/KB/silverlight/FixingAllAsync.aspx

Обратите особое внимание на часть 2 статьи, которая описывает, как упростить асинхронностьСервисные звонки WCF.Автор описывает подход к потреблению асинхронных сервисов на основе сопрограмм.Фантастическая статья.

0 голосов
/ 06 июля 2011

Джереми Ликнесс (Jeremy Likness) опубликовал замечательную серию постов в блоге, в которых он описывает использование итераторов для обработки последовательных асинхронных вызовов:

Часть 1: Последовательные асинхронные рабочие процессы в Silverlight с использованием сопрограмм

Часть 2: Последовательные асинхронные рабочие процессы, часть 2: упрощенный

0 голосов
/ 02 июля 2011

Вы смотрели на Reactive Extensions?

Работает на SL и .NET и предоставляет несколько действительно хороших способов иметь асинхронный код

http://msdn.microsoft.com/en-us/data/gg577609

В качестве альтернативы, возможно, посмотрите на F #, у которого уже есть асинхронность в Silverlight 4. Вот (дерзкий) взгляд ....

http://www.trelford.com/blog/post/Exclusive-New-C-5-features-available-in-VS2010-SP1.aspx

...