假设我有一个协程,它使用CM文档中包含的Loader实现,并使用它在页面上显示繁忙指示器
现在假设用户试图向数据存储中添加一个已经存在的对象--在协程中,“save”操作自然会失败,这意味着协程将取消执行
如果发生这种情况,枚举器永远不会到达我的Loader.Hide()调用来隐藏繁忙指示器-我想知道是否已经有了一种机制,即使协程失败也允许一些IResult实现执行?
示例:
public IEnumerator<IResult> SaveData()
{
yield return Framework.Coroutines.Loader.Show("Saving Data");
yield return new Framework.Coroutines.SaveOperation(SomeObject);
yield return Framework.Coroutines.Loader.Hide();
}如果协程在第二步中正常失败,则繁忙指示器仍然显示在屏幕上,使用户没有机会纠正其错误并尝试重新保存(并停止与底层UI的任何交互!)
我可以只扩展协程的实现,让迭代器有一个标志,表明当出现错误时,它们是否被允许执行-只是想知道是否有人已经这样做了,或者它是否是我遗漏的框架的一部分?
发布于 2013-01-27 18:25:04
您也可以使用Caliburn.Micro Action Filters。参见SetBusyAttribute。属性的声明式风格是透明的,并且使代码更易于管理。
https://stackoverflow.com/questions/14427525
复制相似问题