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 } |