Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / CompMod / System / ComponentModel / AsyncOperation.cs / 1 / AsyncOperation.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.ComponentModel { using System.Security.Permissions; using System.Threading; [HostProtection(SharedState = true)] public sealed class AsyncOperation { private SynchronizationContext syncContext; private object userSuppliedState; private bool alreadyCompleted; ////// Constructor. Protected to avoid unwitting usage - AsyncOperation objects /// are typically created by AsyncOperationManager calling CreateOperation. /// private AsyncOperation(object userSuppliedState, SynchronizationContext syncContext) { this.userSuppliedState = userSuppliedState; this.syncContext = syncContext; this.alreadyCompleted = false; this.syncContext.OperationStarted(); } ////// Destructor. Guarantees that [....] context will always get notified of completion. /// ~AsyncOperation() { if (!alreadyCompleted && syncContext != null) { syncContext.OperationCompleted(); } } public object UserSuppliedState { get { return userSuppliedState; } } ///public SynchronizationContext SynchronizationContext { get { return syncContext; } } public void Post(SendOrPostCallback d, object arg) { VerifyNotCompleted(); VerifyDelegateNotNull(d); syncContext.Post(d, arg); } public void PostOperationCompleted(SendOrPostCallback d, object arg) { Post(d, arg); OperationCompletedCore(); } public void OperationCompleted() { VerifyNotCompleted(); OperationCompletedCore(); } private void OperationCompletedCore() { try { syncContext.OperationCompleted(); } finally { alreadyCompleted = true; GC.SuppressFinalize(this); } } private void VerifyNotCompleted() { if (alreadyCompleted) { throw new InvalidOperationException(SR.GetString(SR.Async_OperationAlreadyCompleted)); } } private void VerifyDelegateNotNull(SendOrPostCallback d) { if (d == null) { throw new ArgumentNullException(SR.GetString(SR.Async_NullDelegate), "d"); } } /// /// Only for use by AsyncOperationManager to create new AsyncOperation objects /// internal static AsyncOperation CreateOperation(object userSuppliedState, SynchronizationContext syncContext) { AsyncOperation newOp = new AsyncOperation(userSuppliedState, syncContext); return newOp; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.ComponentModel { using System.Security.Permissions; using System.Threading; [HostProtection(SharedState = true)] public sealed class AsyncOperation { private SynchronizationContext syncContext; private object userSuppliedState; private bool alreadyCompleted; ////// Constructor. Protected to avoid unwitting usage - AsyncOperation objects /// are typically created by AsyncOperationManager calling CreateOperation. /// private AsyncOperation(object userSuppliedState, SynchronizationContext syncContext) { this.userSuppliedState = userSuppliedState; this.syncContext = syncContext; this.alreadyCompleted = false; this.syncContext.OperationStarted(); } ////// Destructor. Guarantees that [....] context will always get notified of completion. /// ~AsyncOperation() { if (!alreadyCompleted && syncContext != null) { syncContext.OperationCompleted(); } } public object UserSuppliedState { get { return userSuppliedState; } } ///public SynchronizationContext SynchronizationContext { get { return syncContext; } } public void Post(SendOrPostCallback d, object arg) { VerifyNotCompleted(); VerifyDelegateNotNull(d); syncContext.Post(d, arg); } public void PostOperationCompleted(SendOrPostCallback d, object arg) { Post(d, arg); OperationCompletedCore(); } public void OperationCompleted() { VerifyNotCompleted(); OperationCompletedCore(); } private void OperationCompletedCore() { try { syncContext.OperationCompleted(); } finally { alreadyCompleted = true; GC.SuppressFinalize(this); } } private void VerifyNotCompleted() { if (alreadyCompleted) { throw new InvalidOperationException(SR.GetString(SR.Async_OperationAlreadyCompleted)); } } private void VerifyDelegateNotNull(SendOrPostCallback d) { if (d == null) { throw new ArgumentNullException(SR.GetString(SR.Async_NullDelegate), "d"); } } /// /// Only for use by AsyncOperationManager to create new AsyncOperation objects /// internal static AsyncOperation CreateOperation(object userSuppliedState, SynchronizationContext syncContext) { AsyncOperation newOp = new AsyncOperation(userSuppliedState, syncContext); return newOp; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- PublisherIdentityPermission.cs
- Wizard.cs
- newinstructionaction.cs
- AtomServiceDocumentSerializer.cs
- SystemIPv4InterfaceProperties.cs
- Currency.cs
- Converter.cs
- MulticastNotSupportedException.cs
- CapabilitiesPattern.cs
- DataGridCell.cs
- DecoratedNameAttribute.cs
- ComponentCache.cs
- SmiEventStream.cs
- HtmlMeta.cs
- CriticalFinalizerObject.cs
- WindowsIPAddress.cs
- WebPartConnectVerb.cs
- HitTestWithPointDrawingContextWalker.cs
- ProviderUtil.cs
- ProfilePropertySettings.cs
- ToolStripItemImageRenderEventArgs.cs
- ResourceManager.cs
- WebPartHelpVerb.cs
- DataColumnChangeEvent.cs
- SqlCharStream.cs
- UserUseLicenseDictionaryLoader.cs
- AdapterDictionary.cs
- XsltFunctions.cs
- BaseContextMenu.cs
- ControlType.cs
- MiniLockedBorderGlyph.cs
- XamlFilter.cs
- DbXmlEnabledProviderManifest.cs
- UITypeEditor.cs
- ConcurrencyBehavior.cs
- ToolBarButtonClickEvent.cs
- GeometryCollection.cs
- GAC.cs
- ThicknessAnimation.cs
- SQLInt16.cs
- MissingFieldException.cs
- TreeWalkHelper.cs
- Solver.cs
- ArrayHelper.cs
- BlurEffect.cs
- NameValuePair.cs
- MenuItem.cs
- JoinSymbol.cs
- SelectedPathEditor.cs
- NewArray.cs
- SevenBitStream.cs
- WebPartCatalogCloseVerb.cs
- DataObjectFieldAttribute.cs
- ACE.cs
- SelectionRange.cs
- X509SecurityToken.cs
- WebPartConnectionsCancelEventArgs.cs
- Executor.cs
- CfgParser.cs
- StringUtil.cs
- FrameworkTemplate.cs
- PropertyDescriptorCollection.cs
- TypeReference.cs
- ComponentRenameEvent.cs
- XmlSchemaExporter.cs
- BindableAttribute.cs
- ConstructorNeedsTagAttribute.cs
- NamedPipeTransportBindingElement.cs
- StringDictionaryEditor.cs
- WindowsEditBox.cs
- Clause.cs
- TypefaceMap.cs
- XmlMembersMapping.cs
- XmlSchemaInfo.cs
- Parser.cs
- SecurityDescriptor.cs
- ResourceSet.cs
- DecimalStorage.cs
- StdRegProviderWrapper.cs
- IdentityValidationException.cs
- SqlDataSourceEnumerator.cs
- ObjectIDGenerator.cs
- StylusPointProperties.cs
- PersistenceContext.cs
- BCLDebug.cs
- BufferBuilder.cs
- DifferencingCollection.cs
- SHA512Managed.cs
- MetadataArtifactLoaderResource.cs
- NamedPipeConnectionPoolSettingsElement.cs
- DataGridViewCellPaintingEventArgs.cs
- StringValidator.cs
- SqlDeflator.cs
- XpsS0ValidatingLoader.cs
- InternalSafeNativeMethods.cs
- CompilerCollection.cs
- XmlMembersMapping.cs
- FormViewCommandEventArgs.cs
- CollectionBase.cs
- ExpressionContext.cs