Mercurial > pub > ImplabNet
comparison Implab/Components/PollingComponent.cs @ 260:547a2fc0d93e v3 v3.0.6
minor fixes
| author | cin |
|---|---|
| date | Fri, 13 Apr 2018 19:14:59 +0300 |
| parents | 7d52dc684bbd |
| children | f1696cdc3d7a |
comparison
equal
deleted
inserted
replaced
| 259:7d52dc684bbd | 260:547a2fc0d93e |
|---|---|
| 48 // component in Stopping state, no new polls will be scheduled | 48 // component in Stopping state, no new polls will be scheduled |
| 49 m_cancellation.Cancel(); | 49 m_cancellation.Cancel(); |
| 50 try { | 50 try { |
| 51 // await for pending poll | 51 // await for pending poll |
| 52 await m_poll; | 52 await m_poll; |
| 53 } catch (OperationCanceledException e) { | 53 } catch (OperationCanceledException) { |
| 54 // OK | 54 // OK |
| 55 } | 55 } |
| 56 } | 56 } |
| 57 | 57 |
| 58 protected abstract Task Poll(CancellationToken ct); | 58 protected abstract Task Poll(CancellationToken ct); |
| 69 | 69 |
| 70 async void OnTimer(object state) { | 70 async void OnTimer(object state) { |
| 71 try { | 71 try { |
| 72 m_pending.Start(); | 72 m_pending.Start(); |
| 73 await m_poll; | 73 await m_poll; |
| 74 ScheduleNextPoll(Interval); | |
| 74 } catch (Exception e) { | 75 } catch (Exception e) { |
| 75 UnhandledException.DispatchEvent(this, new UnhandledExceptionEventArgs(e, false)); | 76 UnhandledException.DispatchEvent(this, new UnhandledExceptionEventArgs(e, false)); |
| 77 | |
| 76 if (FailOnError) | 78 if (FailOnError) |
| 77 Fail(e); | 79 Fail(e); |
| 80 else | |
| 81 ScheduleNextPoll(Interval); | |
| 78 } | 82 } |
| 79 ScheduleNextPoll(Interval); | 83 |
| 80 } | 84 } |
| 81 | 85 |
| 82 protected override void Dispose(bool disposing) { | 86 protected override void Dispose(bool disposing) { |
| 83 if (disposing) | 87 if (disposing) |
| 84 Safe.Dispose(m_timer, m_cancellation); | 88 Safe.Dispose(m_timer, m_cancellation); |
