Mercurial > pub > ImplabNet
diff Implab/FuncChainTask.cs @ 187:dd4a3590f9c6 ref20160224
Reworked cancelation handling, if the cancel handler isn't specified the OperationCanceledException will be handled by the error handler
Any unhandled OperationCanceledException will cause the promise cancelation
author | cin |
---|---|
date | Tue, 19 Apr 2016 17:35:20 +0300 |
parents | eb793fbbe4ea |
children | 40d7fed4a09e |
line wrap: on
line diff
--- a/Implab/FuncChainTask.cs Tue Apr 19 00:50:14 2016 +0300 +++ b/Implab/FuncChainTask.cs Tue Apr 19 17:35:20 2016 +0300 @@ -13,8 +13,10 @@ if (m_task != null && LockCancelation()) { try { var operation = m_task(); - operation.On(SetResult, HandleErrorInternal, SetCancelled); + operation.On(SetResult, HandleErrorInternal, HandleCancelInternal); CancellationRequested(operation.Cancel); + } catch (OperationCanceledException reason) { + HandleCancelInternal(reason); } catch (Exception err) { HandleErrorInternal(err); }