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);
|
|
}
|
|
}
|
|
}
|