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 }