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
- DataBoundControlHelper.cs
- SqlInternalConnectionSmi.cs
- IntellisenseTextBox.designer.cs
- ObjectStateEntryDbDataRecord.cs
- XmlDocumentFragment.cs
- NameValueConfigurationElement.cs
- WebPartConnectionCollection.cs
- IndexingContentUnit.cs
- SystemColorTracker.cs
- ConnectionDemuxer.cs
- HideDisabledControlAdapter.cs
- UIntPtr.cs
- HtmlInputHidden.cs
- SequentialActivityDesigner.cs
- HttpHandlerAction.cs
- WinEventHandler.cs
- WebPartTracker.cs
- SHA1Managed.cs
- InternalBufferOverflowException.cs
- counter.cs
- AddInToken.cs
- VerificationException.cs
- MenuItemBinding.cs
- ConfigViewGenerator.cs
- BitmapMetadataEnumerator.cs
- RepeaterCommandEventArgs.cs
- JsonGlobals.cs
- OdbcErrorCollection.cs
- XmlDocumentType.cs
- ObjectDataSource.cs
- Util.cs
- KnownBoxes.cs
- MediaContext.cs
- ErasingStroke.cs
- _NTAuthentication.cs
- TripleDES.cs
- BoolExpr.cs
- SystemException.cs
- userdatakeys.cs
- UnauthorizedWebPart.cs
- InputMethodStateChangeEventArgs.cs
- LinkClickEvent.cs
- SizeConverter.cs
- Model3DCollection.cs
- BaseProcessProtocolHandler.cs
- WithStatement.cs
- ManagementScope.cs
- ListViewItem.cs
- ServiceOperationParameter.cs
- ScrollBar.cs
- FixedHyperLink.cs
- XmlBaseReader.cs
- JpegBitmapEncoder.cs
- GeneralTransform2DTo3D.cs
- FileVersionInfo.cs
- Pens.cs
- DefaultPropertyAttribute.cs
- FlowLayoutPanel.cs
- TraceUtility.cs
- Typography.cs
- HostingEnvironmentWrapper.cs
- X509ThumbprintKeyIdentifierClause.cs
- RecognitionResult.cs
- SelectionGlyph.cs
- FrameworkContextData.cs
- LeafCellTreeNode.cs
- SqlDataSourceStatusEventArgs.cs
- CopyNodeSetAction.cs
- JsonWriter.cs
- NominalTypeEliminator.cs
- XPathParser.cs
- ControlPaint.cs
- WebPartExportVerb.cs
- ResXResourceReader.cs
- WhitespaceSignificantCollectionAttribute.cs
- TypefaceMetricsCache.cs
- VirtualizingStackPanel.cs
- GroupQuery.cs
- SourceFilter.cs
- DataGridPageChangedEventArgs.cs
- LinqDataSource.cs
- CodeMemberProperty.cs
- ServerProtocol.cs
- SelectedPathEditor.cs
- Lasso.cs
- MobileUserControl.cs
- HtmlControlPersistable.cs
- WebPartAuthorizationEventArgs.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- GlyphInfoList.cs
- IndexerNameAttribute.cs
- ProviderIncompatibleException.cs
- InvalidMessageContractException.cs
- InlineUIContainer.cs
- UnsettableComboBox.cs
- ToolStrip.cs
- CultureInfo.cs
- TableCellsCollectionEditor.cs
- MaskInputRejectedEventArgs.cs
- XmlAttributes.cs