想象我有一個使用的Loader
包含在CM文檔執行協同程序,我用它來顯示我的網頁上忙指示符「最後」的協同程序
現在想象用戶嘗試添加對象已經存在數據存儲 - 當然在協程期間,'保存'操作將失敗,這意味着協程將取消執行
如果發生這種情況,枚舉數永遠達不到我的Loader.Hide()
調用來隱藏忙指標 - m想知道是否已經有一種機制允許一些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();
}
如果協同程序合法失敗的第二個步驟,忙碌指示器保持在屏幕上,使用戶沒有機會糾正自己的錯誤,並嘗試重新保存(並停止任何交互與底層的用戶界面!)
我只能擴展coroutine的實現,並有迭代器有一個標誌,說明是否允許他們執行時,有一個錯誤 - 只是想知道如果任何人已經做到這一點,或者如果它是我錯過了框架的一部分?
基本上你需要實現你自己的自定義[SequentialResult](http://caliburnmicro.codeplex.com/SourceControl/changeset/view/a9efed22b615#src/Caliburn.Micro.Silverlight/SequentialResult.cs)。然後你可以使用'Coroutine.CreateParentEnumerator =(inner)=> new MySequentialResult(inner);' – nemesv
來定製corutine創建。感謝你們,我重新實現了'SequentialResult'並創建了一個接口,它包含一個標誌'IResult'以確定例程是否允許在先前的故障之後運行。 'SequentialResult'仍然返回原始錯誤。運行良好 - 用我的幾個屏幕進行測試,以確保沒有問題 – Charleh