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

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

namespace System.Activities 
{
    using System.Xml; 
    using System.Collections.Generic; 
    using System.Threading;
    using System.Runtime; 

    class AsyncInvokeOperation
    {
        object thisLock; 

        public AsyncInvokeOperation(SynchronizationContext syncContext) 
        { 
            Fx.Assert(syncContext != null, "syncContext cannot be null");
            this.SyncContext = syncContext; 
            thisLock = new object();
        }

        SynchronizationContext SyncContext 
        {
            get; 
            set; 
        }
 
        bool Completed
        {
            get;
            set; 
        }
 
        public void OperationStarted() 
        {
            this.SyncContext.OperationStarted(); 
        }

        public void OperationCompleted()
        { 
            lock (thisLock)
            { 
                Fx.AssertAndThrowFatal(!this.Completed, "Async operation has already been completed"); 
                this.Completed = true;
            } 
            this.SyncContext.OperationCompleted();
        }

        public void PostOperationCompleted(SendOrPostCallback callback, object arg) 
        {
            lock (thisLock) 
            { 
                Fx.AssertAndThrowFatal(!this.Completed, "Async operation has already been completed");
                this.Completed = true; 
            }
            Fx.Assert(callback != null, "callback cannot be null");
            this.SyncContext.Post(callback, arg);
            this.SyncContext.OperationCompleted(); 
        }
    } 
} 

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