1

想象一下,我有一个协程,它使用LoaderCM 文档中包含的实现,我用它在我的页面上显示一个繁忙的指示器

现在想象一下,用户试图将一个已经存在的对象添加到数据存储中——在协程期间,“保存”操作自然会失败,这意味着协程将取消执行

如果发生这种情况,枚举器永远不会到达我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 的任何交互!)

我可以扩展协程的实现,并让迭代器有一个标志,表明是否允许在出现错误时执行它们 - 只是想知道是否有人已经这样做了,或者它是否是我缺少的框架的一部分?

4

1 回答 1

1

您还可以使用 Caliburn.Micro Action Filters。见SetBusyAttribute。属性的声明式风格是透明的,使代码更易于管理。

于 2013-01-27T10:25:03.743 回答