27 lines
		
	
	
		
			715 B
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			27 lines
		
	
	
		
			715 B
		
	
	
	
		
			C#
		
	
	
	
| 
								 | 
							
								using System;
							 | 
						|||
| 
								 | 
							
								using System.Reactive.Linq;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								namespace DM_Weight.util.TabTip
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    internal static class PoolingTimer
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        private static bool Pooling;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        internal static void PoolUntilTrue(Func<bool> PoolingFunc, Action Callback, TimeSpan dueTime, TimeSpan period)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            if (Pooling) return;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            Pooling = true;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            Observable.Timer(dueTime, period)
							 | 
						|||
| 
								 | 
							
								                .Select(_ => PoolingFunc())
							 | 
						|||
| 
								 | 
							
								                .TakeWhile(stop => stop != true)
							 | 
						|||
| 
								 | 
							
								                .Where(stop => stop == true)
							 | 
						|||
| 
								 | 
							
								                .Finally(() => Pooling = false)
							 | 
						|||
| 
								 | 
							
								                .Subscribe(
							 | 
						|||
| 
								 | 
							
								                    onNext: _ => { },
							 | 
						|||
| 
								 | 
							
								                    onCompleted: Callback);
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 |