我必须调用属于外部组件的方法。该方法的签名如下所示:
IImportedData Import(string fileName, Action<int> progress);
这个操作可能需要很长时间才能执行,所以我需要异步调用它并向用户报告进度。我正在寻找不同的方法来调用它(Rx、TPL、ThreadPool)以找到富有表现力和清晰的东西,但是我正在努力想出一种在 Rx 中实现它的方法。
乍一看,使用 Rx 报告进度的想法似乎非常合适——它是与进度相关的传入整数流。唯一的问题是,当操作完成时,我需要检查IImportedData
以向用户显示结果。OnCompleted 并非用于此目的,这使我走上了一条路径,即拥有一个公开两个 IObservable 流的类,然后是一个“启动”操作的方法。
private class Importer : IObservable<int>, IObservable<IImportedData>
感觉很笨重,我敢肯定有更好的方法,我不知道。