public IDisposable StartTimer(DispatcherPriority priority, TimeSpan interval, Action tick) { var msec = interval.TotalMilliseconds; var imsec = (uint)msec; if (imsec == 0) { imsec = 1; } return(GlibTimeout.StartTimer(GlibPriority.FromDispatcherPriority(priority), imsec, tick)); }
public void Signal(DispatcherPriority prio) { var idx = (int)prio; lock (_lock) if (!_signaled[idx]) { _signaled[idx] = true; GlibTimeout.Add(GlibPriority.FromDispatcherPriority(prio), 0, () => { lock (_lock) { _signaled[idx] = false; } Signaled?.Invoke(prio); return(false); }); } }