首先,我道歉,因为我的愚蠢问题,我真的不太了解F#。但我知道它使线程处理变得更加容易。然而,看到语言构造有人可能想知道为什么C#应该错过异步工作流的酷感? C#有什么理论上的限制可以阻止上述特性的引入?
答案 0 :(得分:5)
我不知道你的问题的答案,但是关于并发和协调运行时 - 实际上有更简单的替代方案(也基于yield return
)。很久以前我写了一篇关于它的文章,还有Jefrey Richters的“PowerThreading”库,这个库非常简单而且功能强大(使用相同的技巧)。
Asynchronous Programming in C# using Iterators - 我的文章,展示了如何使用C#迭代器(非常直接)对F#异步工作流进行编码
More AsyncEnumerator Features - 讨论PowerThreading库如何使用yield return
进行异步编程(它使用稍微不同的编程模型,但也非常简洁,特别是与CCR相比)。
回答一个问题,在技术上是否可能在C#中使用F#异步工作流程 - 我会说是 - 它实际上是一个非常类似于迭代器的想法(正如你所看到的,你可以使用C#迭代器异步编程已经!)虽然会有一些有趣的问题需要解决。
答案 1 :(得分:1)
总是coordination and concurrency runtime在C#中提供了类似的样式,但是通过使用yield
关键字的异常使得代码略显奇怪。事实证明它在C#中的线程处理非常方便,我推荐它用于任何需要超过简单线程协调的东西。
答案 2 :(得分:1)