C#4的任何良好的异步工作流模式?

时间:2011-06-30 01:24:06

标签: silverlight-4.0 c#-4.0 asynchronous

有人能指出我在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 个答案:

答案 0 :(得分:1)

我们已根据以下一组文章实现了异步库:

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

特别注意本文的第2部分,该部分描述了如何简化异步WCF服务调用。作者描述了基于协同程序消费异步服务的方法。一篇精彩的文章。

答案 1 :(得分:1)

您可以尝试使用Caliburn Micro框架,它是MVVM框架,但它也提供了coroutines的实现 - 它允许您以序列方式调用异步方法。

总的来说,我强烈建议您阅读整个Caliburn Micro框架。

您还可以在Matt Hamilton blog

上阅读有关协同程序的更多信息

答案 2 :(得分:0)

你看过Reactive Extensions吗?

适用于SL和.NET,并提供一些非常好的异步代码方法

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

或者也许可以看看在Silverlight 4中已经异步的F#。看上去(厚颜无耻)......

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

答案 3 :(得分:0)

Jeremy Likness有一系列很好的博客文章,他描述了使用迭代器来处理顺序异步调用:

第1部分: Sequential Asynchronous Workflows in Silverlight using Coroutines

第2部分: Sequential Asynchronous Workflows Part 2: Simplified

相关问题