我的 C# 应用程序中有一些需要异步的功能。这是一个相当简单的工作流程,所以我不需要花哨,我基本上需要相当于jQuery.Deferred。
我的方法应该返回一个人们可以附加成功和失败处理程序的对象。成功或失败处理程序将只触发一次。我还需要一种在异步过程完成时触发成功/失败的方法。
所以我想要这样的东西:
var asyncTask = ReadSomeStatsFrom("a-really-big-file.txt");
asyncTask.OnSuccess += (stats) => Console.WriteLine("Completed " +stats.ToString());
asincTask.OnFail += (err) => Console.WriteLine("Uh Oh "+err.ToString());
//return control to the calling method and go on to do other stuff
是的,我可以创建线程并模拟这种事情,就像几年前我上次需要这个功能时所做的那样,但是现在没有新的东西可以让这一切变得更整洁吗?我一直在听说 Rx,它似乎正在解决类似的问题领域(显然还有更多)。
所以问题 1:我在研究 Rx 的这个功能时是否走在正确的轨道上?如果不是我应该调查的。
和问题 2:上面的例子如何看待 rx,包括实际上表示任务成功或结束ReadSomeStatsFrom()