diff --git a/SampleApplications/SampleLibraries/Client/Session.cs b/SampleApplications/SampleLibraries/Client/Session.cs index a22cb75f..c90a4371 100644 --- a/SampleApplications/SampleLibraries/Client/Session.cs +++ b/SampleApplications/SampleLibraries/Client/Session.cs @@ -3369,21 +3369,18 @@ private void AsyncRequestStarted(IAsyncResult result, uint requestId, uint typeI lock (m_outstandingRequests) { // check if the request completed asynchronously. - AsyncRequestState state = RemoveRequest(result, requestId, typeId); - - // add a new request. - if (state == null) - { - state = new AsyncRequestState(); + if (result.IsCompleted) + return; - state.Defunct = false; - state.RequestId = requestId; - state.RequestTypeId = typeId; - state.Result = result; - state.Timestamp = DateTime.UtcNow; + // add request + AsyncRequestState state = new AsyncRequestState(); + state.Defunct = false; + state.RequestId = requestId; + state.RequestTypeId = typeId; + state.Result = result; + state.Timestamp = DateTime.UtcNow; - m_outstandingRequests.AddLast(state); - } + m_outstandingRequests.AddLast(state); } } @@ -3396,33 +3393,20 @@ private void AsyncRequestCompleted(IAsyncResult result, uint requestId, uint typ { // remove the request. AsyncRequestState state = RemoveRequest(result, requestId, typeId); - - if (state != null) - { - // mark any old requests as default (i.e. the should have returned before this request). - DateTime maxAge = state.Timestamp.AddSeconds(-1); - - for (LinkedListNode ii = m_outstandingRequests.First; ii != null; ii = ii.Next) - { - if (ii.Value.RequestTypeId == typeId && ii.Value.Timestamp < maxAge) - { - ii.Value.Defunct = true; - } - } - } - // add a dummy placeholder since the begin request has not completed yet. + // if request was completed before registering in AsyncRequestStarted if (state == null) - { - state = new AsyncRequestState(); + return; - state.Defunct = true; - state.RequestId = requestId; - state.RequestTypeId = typeId; - state.Result = result; - state.Timestamp = DateTime.UtcNow; + // mark any old requests as default (i.e. the should have returned before this request). + DateTime maxAge = state.Timestamp.AddSeconds(-1); - m_outstandingRequests.AddLast(state); + for (LinkedListNode ii = m_outstandingRequests.First; ii != null; ii = ii.Next) + { + if (ii.Value.RequestTypeId == typeId && ii.Value.Timestamp < maxAge) + { + ii.Value.Defunct = true; + } } } }