コード例 #1
0
        }     // 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
コード例 #2
0
ファイル: remotingattributes.cs プロジェクト: ArildF/masters
        } // 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