public void Subscribe(InputSender.TransferDelegate transfer) { var subscriber = new Subscriber(transfer); if (Interlocked.CompareExchange(ref _subscriber, subscriber, null) != null) { throw new InvalidOperationException("MessageBody.Subscribe may only be called once"); } var continuation = Interlocked.Exchange(ref _continuation, null); if (continuation != null) { continuation.Invoke(); } }
public Subscriber(InputSender.TransferDelegate transfer) { _transfer = transfer; }