@@ -231,55 +231,14 @@ private void EnqueueMessage (Queue queue, object item, ManualResetEvent resetEve
231231 }
232232 }
233233
234- private void LogMessages ( )
234+ private void LogInternal < T > ( Queue queue , Action < T > action , ManualResetEvent resetEvent )
235235 {
236- lock ( logMessageQueue . SyncRoot ) {
237- while ( logMessageQueue . Count > 0 ) {
238- var args = ( BuildMessageEventArgs ) logMessageQueue . Dequeue ( ) ;
239- #pragma warning disable 618
240- Log . LogMessage ( args . Importance , args . Message ) ;
241- #pragma warning restore 618
242- }
243- logDataAvailable . Reset ( ) ;
244- }
245- }
246-
247- private void LogErrors ( )
248- {
249- lock ( errorMessageQueue . SyncRoot ) {
250- while ( errorMessageQueue . Count > 0 ) {
251- var args = ( BuildErrorEventArgs ) errorMessageQueue . Dequeue ( ) ;
252- #pragma warning disable 618
253- Log . LogCodedError ( args . Code , file : args . File , lineNumber : args . LineNumber , message : args . Message ) ;
254- #pragma warning restore 618
255- }
256- errorDataAvailable . Reset ( ) ;
257- }
258- }
259-
260- private void LogWarnings ( )
261- {
262- lock ( warningMessageQueue . SyncRoot ) {
263- while ( warningMessageQueue . Count > 0 ) {
264- var args = ( BuildWarningEventArgs ) warningMessageQueue . Dequeue ( ) ;
265- #pragma warning disable 618
266- Log . LogWarning ( args . Message ) ;
267- #pragma warning restore 618
268- }
269- warningDataAvailable . Reset ( ) ;
270- }
271- }
272-
273- private void LogCustomData ( )
274- {
275- lock ( customMessageQueue . SyncRoot ) {
276- while ( customMessageQueue . Count > 0 ) {
277- var args = ( CustomBuildEventArgs ) customMessageQueue . Dequeue ( ) ;
278- #pragma warning disable 618
279- BuildEngine . LogCustomEvent ( args ) ;
280- #pragma warning restore 618
236+ lock ( queue . SyncRoot ) {
237+ while ( queue . Count > 0 ) {
238+ var args = ( T ) queue . Dequeue ( ) ;
239+ action ( args ) ;
281240 }
282- customDataAvailable . Reset ( ) ;
241+ resetEvent . Reset ( ) ;
283242 }
284243 }
285244
@@ -300,16 +259,30 @@ protected void WaitForCompletion ()
300259 var index = ( WaitHandleIndex ) System . Threading . WaitHandle . WaitAny ( handles , TimeSpan . FromMilliseconds ( 10 ) ) ;
301260 switch ( index ) {
302261 case WaitHandleIndex . LogDataAvailable :
303- LogMessages ( ) ;
262+ LogInternal < BuildMessageEventArgs > ( logMessageQueue , ( e ) => {
263+ #pragma warning disable 618
264+ Log . LogMessage ( e . Importance , e . Message ) ;
265+ #pragma warning restore 618
266+ } , logDataAvailable ) ;
304267 break ;
305- case WaitHandleIndex . ErrorDataAvailable :
306- LogErrors ( ) ;
268+ case WaitHandleIndex . ErrorDataAvailable :
269+ LogInternal < BuildErrorEventArgs > ( errorMessageQueue , ( e ) => {
270+ #pragma warning disable 618
271+ Log . LogCodedError ( e . Code , file : e . File , lineNumber : e . LineNumber , message : e . Message ) ;
272+ #pragma warning restore 618
273+ } , errorDataAvailable ) ;
307274 break ;
308275 case WaitHandleIndex . WarningDataAvailable :
309- LogWarnings ( ) ;
276+ LogInternal < BuildWarningEventArgs > ( warningMessageQueue , ( e ) => {
277+ #pragma warning disable 618
278+ Log . LogWarning ( e . Message ) ;
279+ #pragma warning restore 618
280+ } , warningDataAvailable ) ;
310281 break ;
311282 case WaitHandleIndex . CustomDataAvailable :
312- LogCustomData ( ) ;
283+ LogInternal < CustomBuildEventArgs > ( customMessageQueue , ( e ) => {
284+ BuildEngine . LogCustomEvent ( e ) ;
285+ } , customDataAvailable ) ;
313286 break ;
314287 case WaitHandleIndex . TaskCancelled :
315288 tcs . Cancel ( ) ;
0 commit comments