public void NotifyComputedValueChanged(ComputedValueChangedArgs args) { foreach (var subscriber in subscribers) { InvokeActionOrRemove(subscriber.Key, subscriber => subscriber.ComputedValueChangedAsync(args)); } }
private void OnComputedValueChanged(object sender, ComputedValueChangedArgs e) { bool executed = transactionLock.TryExecuteWithWriteLock(() => { Subscribers.NotifyComputedValueChanged(e); }); if (!executed) { computedValueChangedQueue.Enqueue(e); return; } DequeueAll(); }
protected async override ValueTask <bool> TryInvokeAsync(ComputedValueChangedArgs e) { if (consumer == null) { return(false); } if (!consumer.IsAlive()) { return(true); } await consumer.ForceUpdate(); return(true); }
protected async override ValueTask <bool> TryInvokeAsync(ComputedValueChangedArgs e) { if (!initialized) { initialized = true; if (reactable.RequiresInitialInvoke()) { await InvokeInternalAsync(true); return(true); } } await InvokeInternalAsync(false); return(true); }
protected override ValueTask <bool> TryInvokeAsync(ComputedValueChangedArgs e) { throw new NotImplementedException(); }