至少从.NET 4.0发布以来,微软似乎已经付出了很多努力来支持并行和异步编程,而且似乎已经出现了很多API和库.特别是最近随处可见的以下花哨的名字:
现在它们似乎都是微软的产品,它们似乎都针对.NET的异步或并行编程场景.但目前尚不清楚它们实际上是什么以及它们如何相互关联.实际上有些可能是同一件事.
简而言之,任何人都可以直接记录什么是什么?
parallel-extensions plinq task-parallel-library system.reactive
我正在寻找实现一个API,其中多个操作可以并发运行.MS建议使用基于事件的异步模式:
// Asynchronous methods.
public void Method1Async(string param, object userState);
public event Method1CompletedEventHandler Method1Completed;
public void CancelAsync(object userState);
public bool IsBusy { get; }
Run Code Online (Sandbox Code Playgroud)
然而,这似乎有点笨拙 - 它要求客户过滤掉不适合他们的回复并在完成后断开事件处理程序等.我的想法更像是:
AsyncOperation1(string parm, Action<T> callback)
Run Code Online (Sandbox Code Playgroud)
每个客户都可以直接获得自己的结果.我无法弄清楚如何优雅地支持取消.我想显而易见的是AsyncOperation1返回某种可以传递给CancelAsync方法的令牌.我想了解更多关于.Net或其他可以正确翻译的语言中常见的其他异步模式的用法