ActivityExecutionWorkItem.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 / Runtime / ActivityExecutionWorkItem.cs / 1305376 / ActivityExecutionWorkItem.cs

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

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

    [DataContract]
    abstract class ActivityExecutionWorkItem : WorkItem 
    {
        bool skipActivityInstanceAbort; 
 
        // Used by subclasses in the pooled case
        protected ActivityExecutionWorkItem() 
        {
        }

        public ActivityExecutionWorkItem(ActivityInstance activityInstance) 
            : base(activityInstance)
        { 
        } 

        public override bool IsValid 
        {
            get
            {
                return this.ActivityInstance.State == ActivityInstanceState.Executing; 
            }
        } 
 
        public override ActivityInstance PropertyManagerOwner
        { 
            get
            {
                return this.ActivityInstance;
            } 
        }
 
        protected override void ClearForReuse() 
        {
            base.ClearForReuse(); 
            this.skipActivityInstanceAbort = false;
        }

        protected void SetExceptionToPropagateWithoutAbort(Exception exception) 
        {
            this.ExceptionToPropagate = exception; 
            this.skipActivityInstanceAbort = true; 
        }
 
        public override void PostProcess(ActivityExecutor executor)
        {
            if (this.ExceptionToPropagate != null && !skipActivityInstanceAbort)
            { 
                executor.AbortActivityInstance(this.ActivityInstance, this.ExceptionToPropagate);
            } 
            else if (this.ActivityInstance.UpdateState(executor)) 
            {
                // NOTE: exceptionToPropagate could be non-null here if this is a Fault work item. 
                // That means that the next line could potentially overwrite the exception with a
                // new exception.
                Exception newException = executor.CompleteActivityInstance(this.ActivityInstance);
 
                if (newException != null)
                { 
                    this.ExceptionToPropagate = newException; 
                }
            } 
        }
    }
}

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