HandleInitializationContext.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / System / Activities / HandleInitializationContext.cs / 1305376 / HandleInitializationContext.cs

                            //------------------------------------------------------------------------------ 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//-----------------------------------------------------------------------------

namespace System.Activities 
{
    using System; 
    using System.Activities.Runtime; 
    using System.Diagnostics.CodeAnalysis;
    using System.Runtime; 

    [Fx.Tag.XamlVisible(false)]
    public sealed class HandleInitializationContext
    { 
        ActivityExecutor executor;
        ActivityInstance scope; 
        bool isDiposed; 

        internal HandleInitializationContext(ActivityExecutor executor, ActivityInstance scope) 
        {
            this.executor = executor;
            this.scope = scope;
        } 

        internal ActivityInstance OwningActivityInstance 
        { 
            get
            { 
                return this.scope;
            }
        }
 
        internal ActivityExecutor Executor
        { 
            get 
            {
                return this.executor; 
            }
        }

        public THandle CreateAndInitializeHandle() where THandle : Handle 
        {
            ThrowIfDisposed(); 
            THandle value = Activator.CreateInstance(); 

            value.Initialize(this); 

            // If we have a scope, we need to add this new handle to the LocationEnvironment.
            if (this.scope != null)
            { 
                this.scope.Environment.AddHandle(value);
            } 
            // otherwise add it to the Executor. 
            else
            { 
                this.executor.AddHandle(value);
            }

            return value; 
        }
 
        public void UninitializeHandle(Handle handle) 
        {
            ThrowIfDisposed(); 
            handle.Uninitialize(this);
        }

        internal object CreateAndInitializeHandle(Type handleType) 
        {
            Fx.Assert(ActivityUtilities.IsHandle(handleType), "This should only be called with Handle subtypes."); 
 
            object value = Activator.CreateInstance(handleType);
 
            ((Handle)value).Initialize(this);

            // If we have a scope, we need to add this new handle to the LocationEnvironment.
            if (this.scope != null) 
            {
                this.scope.Environment.AddHandle((Handle)value); 
            } 
            // otherwise add it to the Executor.
            else 
            {
                this.executor.AddHandle((Handle)value);
            }
 
            return value;
        } 
 
        internal BookmarkScope CreateAndRegisterBookmarkScope()
        { 
            return this.executor.BookmarkScopeManager.CreateAndRegisterScope(Guid.Empty);
        }

        internal void UnregisterBookmarkScope(BookmarkScope bookmarkScope) 
        {
            Fx.Assert(bookmarkScope != null, "The sub instance should not equal null."); 
 
            this.executor.BookmarkScopeManager.UnregisterScope(bookmarkScope);
        } 

        void ThrowIfDisposed()
        {
            if (this.isDiposed) 
            {
                throw FxTrace.Exception.AsError(new ObjectDisposedException(SR.HandleInitializationContextDisposed)); 
            } 
        }
 
        internal void Dispose()
        {
            this.isDiposed = true;
        } 
    }
} 
 


// 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