Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- NotificationContext.cs
- RowSpanVector.cs
- WebPartConnectionsCancelEventArgs.cs
- MissingManifestResourceException.cs
- ResourcePermissionBase.cs
- UIElement3DAutomationPeer.cs
- VerificationAttribute.cs
- IntranetCredentialPolicy.cs
- VarRemapper.cs
- CodeLinePragma.cs
- SortDescriptionCollection.cs
- AssertSection.cs
- TextHidden.cs
- MissingMemberException.cs
- RoleManagerSection.cs
- grammarelement.cs
- MarginsConverter.cs
- TextRangeProviderWrapper.cs
- ConfigurationManager.cs
- StrokeCollectionConverter.cs
- ChannelServices.cs
- StickyNoteContentControl.cs
- PolicyDesigner.cs
- DynamicControlParameter.cs
- ModuleConfigurationInfo.cs
- DataGridHyperlinkColumn.cs
- dataobject.cs
- NonBatchDirectoryCompiler.cs
- ConfigXmlCDataSection.cs
- DiscoveryVersion.cs
- VerificationAttribute.cs
- DateTimeFormatInfoScanner.cs
- StorageMappingFragment.cs
- ConfigPathUtility.cs
- ReliableSessionBindingElement.cs
- TextEditor.cs
- Profiler.cs
- RawStylusInput.cs
- SystemIPInterfaceStatistics.cs
- FrugalList.cs
- ResourceAssociationSetEnd.cs
- XmlSchemaExporter.cs
- Convert.cs
- Mapping.cs
- _SSPISessionCache.cs
- SqlInfoMessageEvent.cs
- DbParameterCollectionHelper.cs
- Knowncolors.cs
- CounterSampleCalculator.cs
- CacheSection.cs
- QilParameter.cs
- ScriptReferenceBase.cs
- TextRangeAdaptor.cs
- XmlIlTypeHelper.cs
- ToggleButtonAutomationPeer.cs
- WorkerRequest.cs
- ErrorWebPart.cs
- AppDomain.cs
- FrameworkContextData.cs
- BulletedListEventArgs.cs
- ComponentEditorForm.cs
- DetailsViewDesigner.cs
- SparseMemoryStream.cs
- ClientApiGenerator.cs
- DbException.cs
- DataSourceCache.cs
- GlyphElement.cs
- __ConsoleStream.cs
- ValidationErrorEventArgs.cs
- ContextMenu.cs
- SystemParameters.cs
- ProcessThreadDesigner.cs
- GeneratedCodeAttribute.cs
- XmlBoundElement.cs
- ControlCollection.cs
- OdbcStatementHandle.cs
- SplitterPanel.cs
- DesignOnlyAttribute.cs
- EventArgs.cs
- ObjectQuery.cs
- WindowsFont.cs
- XmlElementList.cs
- PreservationFileWriter.cs
- StateMachine.cs
- XmlElementAttribute.cs
- ConfigXmlAttribute.cs
- InheritanceRules.cs
- Renderer.cs
- MainMenu.cs
- StringInfo.cs
- UTF8Encoding.cs
- ClientData.cs
- StorageMappingItemCollection.cs
- MarshalByValueComponent.cs
- ImageAnimator.cs
- CheckBoxList.cs
- StorageInfo.cs
- NotifyInputEventArgs.cs
- SHA256.cs
- SmtpNtlmAuthenticationModule.cs