1- using System ;
1+ using Microsoft . Extensions . Logging ;
2+ using System ;
23
34[ assembly: System . Runtime . CompilerServices . InternalsVisibleTo ( "RDMSharp.Tests" ) ]
45namespace RDMSharp ;
56
67public class GlobalTimers
78{
9+ private static readonly ILogger Logger = Logging . CreateLogger < GlobalTimers > ( ) ;
810 private static GlobalTimers instance = null ;
911 public static GlobalTimers Instance
1012 {
@@ -107,6 +109,7 @@ public event EventHandler PresentUpdateTimerElapsed
107109 }
108110 private void initializeParameterUpdateTimer ( )
109111 {
112+ Logger ? . LogInformation ( "InitializeParameterUpdateTimer" ) ;
110113 if ( parameterUpdateTimer != null )
111114 return ;
112115 parameterUpdateTimer = new System . Timers . Timer ( ParameterUpdateTimerInterval ) ;
@@ -115,6 +118,7 @@ private void initializeParameterUpdateTimer()
115118 }
116119 private void destroyParameterUpdateTimer ( )
117120 {
121+ Logger ? . LogCritical ( "DestroyParameterUpdateTimer" ) ;
118122 if ( parameterUpdateTimer == null )
119123 return ;
120124 parameterUpdateTimer . Enabled = false ;
@@ -125,6 +129,7 @@ private void destroyParameterUpdateTimer()
125129
126130 private void initializePresentUpdateTimer ( )
127131 {
132+ Logger ? . LogInformation ( "InitializePresentUpdateTimer" ) ;
128133 if ( parameterUpdateTimer != null )
129134 return ;
130135 presentUpdateTimer = new System . Timers . Timer ( PresentUpdateTimerInterval ) ;
@@ -133,6 +138,7 @@ private void initializePresentUpdateTimer()
133138 }
134139 private void destroyPresentUpdateTimer ( )
135140 {
141+ Logger ? . LogCritical ( "DestroyPresentUpdateTimer" ) ;
136142 if ( parameterUpdateTimer == null )
137143 return ;
138144 presentUpdateTimer . Enabled = false ;
@@ -142,6 +148,7 @@ private void destroyPresentUpdateTimer()
142148 }
143149 public void ResetAllTimersToDefault ( )
144150 {
151+ Logger ? . LogCritical ( "ResetAllTimersToDefault" ) ;
145152 QueuedUpdateTime = DefaultQueuedUpdateTime ;
146153 NonQueuedUpdateTime = DefaultNonQueuedUpdateTime ;
147154 UpdateDelayBetweenRequests = DefaultUpdateDelayBetweenRequests ;
@@ -172,37 +179,52 @@ internal void InternalAllTimersToTestSpeed()
172179
173180 private void ParameterUpdateTimer_Elapsed ( object sender , System . Timers . ElapsedEventArgs e )
174181 {
175- // Parallelisierung: Alle Handler parallel ausführen, falls mehrere abonniert sind
176- var handlers = parameterUpdateTimerElapsed ? . GetInvocationList ( ) ;
177- if ( handlers != null )
182+ try
178183 {
179- System . Threading . Tasks . Parallel . ForEach ( handlers , handler =>
184+ var handlers = parameterUpdateTimerElapsed ? . GetInvocationList ( ) ;
185+ if ( handlers != null )
180186 {
181- try
187+ System . Threading . Tasks . Parallel . ForEach ( handlers , handler =>
182188 {
183- ( ( EventHandler ) handler ) ? . Invoke ( sender , EventArgs . Empty ) ;
184- }
185- catch
186- {
187- }
188- } ) ;
189+ try
190+ {
191+ ( ( EventHandler ) handler ) ? . Invoke ( sender , EventArgs . Empty ) ;
192+ }
193+ catch ( Exception ex )
194+ {
195+ Logger ? . LogError ( ex , "Error in ParameterUpdateTimerElapsed handler" ) ;
196+ }
197+ } ) ;
198+ }
199+ }
200+ catch ( Exception ex )
201+ {
202+ Logger ? . LogError ( ex , "Error in ParameterUpdateTimer_Elapsed" ) ;
189203 }
190204 }
191205 private void PresentUpdateTimer_Elapsed ( object sender , System . Timers . ElapsedEventArgs e )
192206 {
193- var handlers = presentUpdateTimerElapsed ? . GetInvocationList ( ) ;
194- if ( handlers != null )
207+ try
195208 {
196- System . Threading . Tasks . Parallel . ForEach ( handlers , handler =>
209+ var handlers = presentUpdateTimerElapsed ? . GetInvocationList ( ) ;
210+ if ( handlers != null )
197211 {
198- try
212+ System . Threading . Tasks . Parallel . ForEach ( handlers , handler =>
199213 {
200- ( ( EventHandler ) handler ) ? . Invoke ( sender , EventArgs . Empty ) ;
201- }
202- catch
203- {
204- }
205- } ) ;
214+ try
215+ {
216+ ( ( EventHandler ) handler ) ? . Invoke ( sender , EventArgs . Empty ) ;
217+ }
218+ catch ( Exception ex )
219+ {
220+ Logger ? . LogError ( ex , "Error in PresentUpdateTimerElapsed handler" ) ;
221+ }
222+ } ) ;
223+ }
224+ }
225+ catch ( Exception ex )
226+ {
227+ Logger ? . LogError ( ex , "Error in PresentUpdateTimer_Elapsed" ) ;
206228 }
207229 }
208230}
0 commit comments