Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Channels / OpenCollectionAsyncResult.cs / 1 / OpenCollectionAsyncResult.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel { using System.Collections.Generic; using System.Threading; internal class OpenCollectionAsyncResult : AsyncResult { bool completedSynchronously; Exception exception; static AsyncCallback nestedCallback = DiagnosticUtility.ThunkAsyncCallback(new AsyncCallback(Callback)); int count; TimeoutHelper timeoutHelper; public OpenCollectionAsyncResult(TimeSpan timeout, AsyncCallback otherCallback, object state, IListcollection) : base(otherCallback, state) { this.timeoutHelper = new TimeoutHelper(timeout); completedSynchronously = true; count = collection.Count; if (count == 0) { Complete(true); return; } for (int index = 0; index < collection.Count; index++) { // Throw exception if there was a failure calling EndOpen in the callback (skips remaining items) if (this.exception != null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(this.exception); CallbackState callbackState = new CallbackState(this, collection[index]); IAsyncResult result = collection[index].BeginOpen(this.timeoutHelper.RemainingTime(), nestedCallback, callbackState); if (result.CompletedSynchronously) { collection[index].EndOpen(result); Decrement(true); } } } static void Callback(IAsyncResult result) { if (result.CompletedSynchronously) return; CallbackState callbackState = (CallbackState)result.AsyncState; try { callbackState.Instance.EndOpen(result); callbackState.Result.Decrement(false); } #pragma warning suppress 56500 // covered by FxCOP catch (Exception e) { if (DiagnosticUtility.IsFatal(e)) throw; callbackState.Result.Decrement(false, e); } } void Decrement(bool completedSynchronously) { if (completedSynchronously == false) this.completedSynchronously = false; if (Interlocked.Decrement(ref count) == 0) { if (this.exception != null) Complete(this.completedSynchronously, this.exception); else Complete(this.completedSynchronously); } } void Decrement(bool completedSynchronously, Exception exception) { this.exception = exception; this.Decrement(completedSynchronously); } public static void End(IAsyncResult result) { AsyncResult.End (result); } class CallbackState { ICommunicationObject instance; OpenCollectionAsyncResult result; public CallbackState(OpenCollectionAsyncResult result, ICommunicationObject instance) { this.result = result; this.instance = instance; } public ICommunicationObject Instance { get { return instance; } } public OpenCollectionAsyncResult Result { get { return result; } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CancelEventArgs.cs
- XmlHierarchicalDataSourceView.cs
- OrderToken.cs
- SerializationObjectManager.cs
- SqlRowUpdatedEvent.cs
- ISFClipboardData.cs
- DataGridViewRowEventArgs.cs
- SafeProcessHandle.cs
- ErrorView.xaml.cs
- TypePresenter.xaml.cs
- OlePropertyStructs.cs
- DataListItemEventArgs.cs
- JournalNavigationScope.cs
- HttpListenerException.cs
- Control.cs
- StyleBamlTreeBuilder.cs
- GeneralTransform2DTo3DTo2D.cs
- MasterPageBuildProvider.cs
- AppDomainShutdownMonitor.cs
- UnsafeNativeMethods.cs
- WSDualHttpBindingElement.cs
- SourceInterpreter.cs
- TableLayout.cs
- HttpResponse.cs
- SystemWebSectionGroup.cs
- RemoveStoryboard.cs
- Baml2006ReaderFrame.cs
- StylusButtonEventArgs.cs
- XsltInput.cs
- TreeView.cs
- IisNotInstalledException.cs
- DataGridViewCheckBoxColumn.cs
- Pts.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- unsafenativemethodsother.cs
- XamlStyleSerializer.cs
- FocusManager.cs
- DataRecordInfo.cs
- _HelperAsyncResults.cs
- X509SecurityTokenProvider.cs
- SiteMapPath.cs
- FileAccessException.cs
- BamlStream.cs
- RTLAwareMessageBox.cs
- WebPartEditVerb.cs
- DiagnosticTrace.cs
- AuthStoreRoleProvider.cs
- ConfigXmlWhitespace.cs
- ObjectReaderCompiler.cs
- XsdDuration.cs
- EpmContentSerializer.cs
- AppSecurityManager.cs
- CaseStatementProjectedSlot.cs
- DragEvent.cs
- DataRowView.cs
- InternalRelationshipCollection.cs
- PerformanceCountersBase.cs
- AddInActivator.cs
- EventWaitHandle.cs
- UpdatePanel.cs
- cookiecontainer.cs
- MDIClient.cs
- PagerSettings.cs
- RegistrySecurity.cs
- InfoCardRSAPKCS1SignatureFormatter.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- StrokeDescriptor.cs
- Propagator.JoinPropagator.cs
- UnauthorizedWebPart.cs
- TableHeaderCell.cs
- XPathMessageFilterTable.cs
- EventLogPermissionEntryCollection.cs
- CursorInteropHelper.cs
- Baml6ConstructorInfo.cs
- Math.cs
- RequestChannel.cs
- XmlDocumentType.cs
- WebPartsPersonalization.cs
- LinqToSqlWrapper.cs
- BlockCollection.cs
- InvalidOperationException.cs
- NameValueFileSectionHandler.cs
- StrokeCollectionDefaultValueFactory.cs
- InfoCardSymmetricCrypto.cs
- TypeName.cs
- PageVisual.cs
- ProfileParameter.cs
- ByeOperationCD1AsyncResult.cs
- TabletDevice.cs
- IsolatedStoragePermission.cs
- PointIndependentAnimationStorage.cs
- PieceNameHelper.cs
- SafeThemeHandle.cs
- StagingAreaInputItem.cs
- SqlCommandBuilder.cs
- PageStatePersister.cs
- UndoManager.cs
- PeerNameResolver.cs
- DataRowExtensions.cs
- AppModelKnownContentFactory.cs