private RconOperationEventArgs InitResultObject(ManualResetEventSlim locker, AsyncRconOperationDelegate callback, object state) { RconOperationEventArgs result; if (locker == null) //async { AsyncRconOperationEventArgs asyncResult = new AsyncRconOperationEventArgs(); asyncResult.Callback = callback; asyncResult.State = state; result = asyncResult; } else //sync { result = new RconOperationEventArgs(); result.Locker = locker; } //result.OperationId = GetOperationId(); return(result); }
private void FinalizeResultObject(int operationId) { RconOperationEventArgs result; lock (_currentOperationsLock) { result = _currentOperations[operationId]; _currentOperations.Remove(operationId); } if (result is AsyncRconOperationEventArgs) //async { AsyncRconOperationEventArgs asyncResult = (AsyncRconOperationEventArgs)result; if (asyncResult.Callback != null) { asyncResult.Callback(asyncResult); } } else //sync { result.Locker.Set(); } }