private Task <RpcMessage> CreateReceiveMessageTask(RpcRequest request) { return(receivedMessages.WhenAdded(id => id == request.Id) .GetAsync() .ContinueWith(t => { KeyValuePair <int, RpcMessage> result = t.Result; receivedMessages.Remove(result.Key); return result.Value; })); }
public void WhenRemovedGet() { const int expectedKey = 9; var dict = new WhenableDictionary<int, string>(); Task.Delay(100).ContinueWith(t => { for (int i = 0; i < expectedKey + 1; i++) { dict.Add(i, i.ToString()); } for (int i = expectedKey; i > 0; i--) { dict.Remove(i); } }); string result = dict.WhenRemoved((k, v) => k == expectedKey).GetValue(); Assert.AreEqual(expectedKey.ToString(), result); }
public void WhenRemovedGet() { const int expectedKey = 9; var dict = new WhenableDictionary <int, string>(); Task.Delay(100).ContinueWith(t => { for (int i = 0; i < expectedKey + 1; i++) { dict.Add(i, i.ToString()); } for (int i = expectedKey; i > 0; i--) { dict.Remove(i); } }); string result = dict.WhenRemoved((k, v) => k == expectedKey).GetValue(); Assert.AreEqual(expectedKey.ToString(), result); }