} // ReturnType internal bool GetAsyncMethodVersion(out MethodInfo begin, out MethodInfo end) { // synchronization doesn't matter (methods always return same value) if ((flags & MethodCacheFlags.CheckedForAsync) == 0) { // look for async versions of this method // FUTURE: In V.Next, there should be an attribute to indicate that // async processing is desired. if (RemotingServices.FindAsyncMethodVersion((MethodInfo)RI, out begin, out end)) { RemotingAsyncMethodCachedData async = new RemotingAsyncMethodCachedData(); async.BeginMethodInfo = begin; async.EndMethodInfo = end; _asyncMethodData = async; } else { _asyncMethodData = null; } flags |= MethodCacheFlags.CheckedForAsync; } if (_asyncMethodData != null) { begin = _asyncMethodData.BeginMethodInfo; end = _asyncMethodData.EndMethodInfo; return(true); } else { // there are no async versions of this method begin = null; end = null; return(false); } } // GetAsyncMethodVersion
} // ReturnType internal bool GetAsyncMethodVersion(out MethodInfo begin, out MethodInfo end) { // synchronization doesn't matter (methods always return same value) if ((flags & MethodCacheFlags.CheckedForAsync) == 0) { // look for async versions of this method if (RemotingServices.FindAsyncMethodVersion((MethodInfo)RI, out begin, out end)) { RemotingAsyncMethodCachedData async = new RemotingAsyncMethodCachedData(); async.BeginMethodInfo = begin; async.EndMethodInfo = end; _asyncMethodData = async; } else { _asyncMethodData = null; } flags |= MethodCacheFlags.CheckedForAsync; } if (_asyncMethodData != null) { begin = _asyncMethodData.BeginMethodInfo; end = _asyncMethodData.EndMethodInfo; return true; } else { // there are no async versions of this method begin = null; end = null; return false; } } // GetAsyncMethodVersion