【发布时间】:2016-01-19 12:47:05
【问题描述】:
我有一系列图像 (IObservable<ImageSource>) 通过这个“管道”。
- 使用 OCR 识别每个图像
- 如果结果具有有效值,则会将其上传到可以在给定时间(非同时)注册一组结果的服务。
- 如果结果有任何无效值,则会将它们呈现给用户以进行修复。修复后,该过程将继续。
- 在此过程中,用户界面应保持响应。
问题是当用户必须交互时,我不知道如何处理这种情况。我就是不能这样做
subscription = images
.Do(source => source.Freeze())
.Select(image => OcrService.Recognize(image))
.Subscribe(ocrResults => Upload(ocrResults));
...因为当用户必须修复 ocrResults 时,应保持流程暂停直到接受有效值(即,用户可以执行单击按钮的命令)
怎么说:如果结果无效,等到用户修复它们?
【问题讨论】:
-
我认为在您完成订阅过程之前,您无法将 imageSource 数据推送到 byte[] 数组中?这些方法是否依赖于该 ui 元素?
-
“由于我使用 ImageSource,我可能在不是 UI 线程的线程中遇到问题”。如果你
Freeze()它就不会。 -
它适用于冻结!谢谢!
-
非常抱歉。我提出问题的方式并不代表我的保真度问题。我已经对其进行了编辑,现在它更适合了。
-
听起来您需要暂停
Observable。有办法做到这一点,例如this one(如果成功了,别忘了给作者点赞)
标签: c# .net wpf system.reactive observable