Mercurial > pub > ImplabNet
comparison Implab/ActionChainTaskBase.cs @ 199:43b1017ce100 v2
Слияние с default
| author | cin | 
|---|---|
| date | Fri, 14 Oct 2016 03:33:17 +0300 | 
| parents | b305c678923a | 
| children | 
   comparison
  equal
  deleted
  inserted
  replaced
| 195:ea485487a424 | 199:43b1017ce100 | 
|---|---|
| 34 // т.е. если он инициировал отмену, задача отменилась, вызвался обрабочик отмены | 34 // т.е. если он инициировал отмену, задача отменилась, вызвался обрабочик отмены | 
| 35 // отбработчику сообщили, что результат уже не нужен и уже сам обработчик решает | 35 // отбработчику сообщили, что результат уже не нужен и уже сам обработчик решает | 
| 36 // отдавать ли результат или подтвердить отмену (или вернуть ошибку). | 36 // отдавать ли результат или подтвердить отмену (или вернуть ошибку). | 
| 37 CancellationRequested(p.Cancel); | 37 CancellationRequested(p.Cancel); | 
| 38 } catch (Exception err) { | 38 } catch (Exception err) { | 
| 39 HandleErrorInternal(err); | 39 SetErrorInternal(err); | 
| 40 } | 40 } | 
| 41 } else { | 41 } else { | 
| 42 HandleErrorInternal(reason ?? new OperationCanceledException()); | 42 SetCancelledInternal(reason); | 
| 43 } | 43 } | 
| 44 } | 44 } | 
| 45 | 45 | 
| 46 protected void HandleErrorInternal(Exception error) { | 46 protected void HandleErrorInternal(Exception error) { | 
| 47 if (m_error != null) { | 47 if (m_error != null) { | 
| 48 try { | 48 try { | 
| 49 var p = m_error(error); | 49 var p = m_error(error); | 
| 50 p.On(SetResult, SetErrorInternal, SetCancelledInternal); | 50 p.On(SetResult, SetErrorInternal, SetCancelledInternal); | 
| 51 CancellationRequested(p.Cancel); | 51 CancellationRequested(p.Cancel); | 
| 52 } catch (Exception err) { | 52 } catch (Exception err) { | 
| 53 SetErrorInternal(error); | 53 SetErrorInternal(err); | 
| 54 } | 54 } | 
| 55 } else { | 55 } else { | 
| 56 SetErrorInternal(error); | 56 SetErrorInternal(error); | 
| 57 } | 57 } | 
| 58 } | 58 } | 
