ObjectHandle.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / clr / src / BCL / System / Runtime / Remoting / ObjectHandle.cs / 1 / ObjectHandle.cs

                            // ==++== 
//
//   Copyright (c) Microsoft Corporation.  All rights reserved.
//
// ==--== 
/*============================================================
** 
** Class:  ObjectHandle 
**
** 
** ObjectHandle wraps object references. A Handle allows a
** marshal by value object to be returned through an
** indirection allowing the caller to control when the
** object is loaded into their domain. 
**
** 
===========================================================*/ 

namespace System.Runtime.Remoting{ 

    using System;
    using System.Security.Permissions;
    using System.Runtime.InteropServices; 
    using System.Runtime.Remoting;
    using System.Runtime.Remoting.Activation; 
    using System.Runtime.Remoting.Lifetime; 

    [ClassInterface(ClassInterfaceType.AutoDual)] 
[System.Runtime.InteropServices.ComVisible(true)]
    public class ObjectHandle: MarshalByRefObject, IObjectHandle
    {
        private Object WrappedObject; 

        private ObjectHandle() 
        { 
        }
 
        public ObjectHandle(Object o)
        {
            WrappedObject = o;
        } 

        public Object Unwrap() 
        { 
            return WrappedObject;
        } 

        // ObjectHandle has a finite lifetime. For now the default
        // lifetime is being used, this can be changed in this method to
        // specify a custom lifetime. 
        [SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.Infrastructure)]	
        public override Object InitializeLifetimeService() 
        { 
            BCLDebug.Trace("REMOTE", "ObjectHandle.InitializeLifetimeService");
 
            //
            // If the wrapped object has implemented InitializeLifetimeService to return null,
            // we don't want to go to the base class (which will result in a lease being
            // requested from the MarshalByRefObject, which starts up the LeaseManager, 
            // which starts up the ThreadPool, adding three threads to the process.
            // We check if the wrapped object is a MarshalByRef object, and call InitializeLifetimeServices on it 
            // and if it returns null, we return null. Otherwise we fall back to the old behavior. 
            //
 
            MarshalByRefObject mbr = WrappedObject as MarshalByRefObject;
            if (mbr != null) {
                Object o = mbr.InitializeLifetimeService();
                if (o == null) 
                    return null;
            } 
            ILease lease = (ILease)base.InitializeLifetimeService(); 
            return lease;
        } 
    }
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// ==++== 
//
//   Copyright (c) Microsoft Corporation.  All rights reserved.
//
// ==--== 
/*============================================================
** 
** Class:  ObjectHandle 
**
** 
** ObjectHandle wraps object references. A Handle allows a
** marshal by value object to be returned through an
** indirection allowing the caller to control when the
** object is loaded into their domain. 
**
** 
===========================================================*/ 

namespace System.Runtime.Remoting{ 

    using System;
    using System.Security.Permissions;
    using System.Runtime.InteropServices; 
    using System.Runtime.Remoting;
    using System.Runtime.Remoting.Activation; 
    using System.Runtime.Remoting.Lifetime; 

    [ClassInterface(ClassInterfaceType.AutoDual)] 
[System.Runtime.InteropServices.ComVisible(true)]
    public class ObjectHandle: MarshalByRefObject, IObjectHandle
    {
        private Object WrappedObject; 

        private ObjectHandle() 
        { 
        }
 
        public ObjectHandle(Object o)
        {
            WrappedObject = o;
        } 

        public Object Unwrap() 
        { 
            return WrappedObject;
        } 

        // ObjectHandle has a finite lifetime. For now the default
        // lifetime is being used, this can be changed in this method to
        // specify a custom lifetime. 
        [SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.Infrastructure)]	
        public override Object InitializeLifetimeService() 
        { 
            BCLDebug.Trace("REMOTE", "ObjectHandle.InitializeLifetimeService");
 
            //
            // If the wrapped object has implemented InitializeLifetimeService to return null,
            // we don't want to go to the base class (which will result in a lease being
            // requested from the MarshalByRefObject, which starts up the LeaseManager, 
            // which starts up the ThreadPool, adding three threads to the process.
            // We check if the wrapped object is a MarshalByRef object, and call InitializeLifetimeServices on it 
            // and if it returns null, we return null. Otherwise we fall back to the old behavior. 
            //
 
            MarshalByRefObject mbr = WrappedObject as MarshalByRefObject;
            if (mbr != null) {
                Object o = mbr.InitializeLifetimeService();
                if (o == null) 
                    return null;
            } 
            ILease lease = (ILease)base.InitializeLifetimeService(); 
            return lease;
        } 
    }
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK