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
- ImageConverter.cs
- DataGridLength.cs
- WorkflowValidationFailedException.cs
- StdValidatorsAndConverters.cs
- ArgumentOutOfRangeException.cs
- SurrogateDataContract.cs
- SqlCommandSet.cs
- ConsumerConnectionPoint.cs
- IsolationInterop.cs
- ControlPropertyNameConverter.cs
- SHA384Managed.cs
- CompoundFileReference.cs
- HttpClientProtocol.cs
- CodeDOMProvider.cs
- CheckoutException.cs
- DoubleAnimationUsingPath.cs
- BitmapImage.cs
- XPathPatternParser.cs
- WindowsRichEditRange.cs
- RecommendedAsConfigurableAttribute.cs
- OutOfProcStateClientManager.cs
- PseudoWebRequest.cs
- XmlSchemaFacet.cs
- PhysicalAddress.cs
- FontWeights.cs
- ListViewVirtualItemsSelectionRangeChangedEvent.cs
- DriveInfo.cs
- HttpServerUtilityWrapper.cs
- Int16.cs
- XPathNavigatorReader.cs
- ScalarOps.cs
- InvalidPrinterException.cs
- ReferencedCollectionType.cs
- DictionaryEntry.cs
- DataTemplateKey.cs
- ListControl.cs
- WebPartEventArgs.cs
- DateTime.cs
- DataGridCell.cs
- RotateTransform.cs
- Debug.cs
- ImplicitInputBrush.cs
- WebPartManagerInternals.cs
- WebPartEditorCancelVerb.cs
- TransformCryptoHandle.cs
- XmlTextAttribute.cs
- BuildProvidersCompiler.cs
- XmlDataProvider.cs
- RC2CryptoServiceProvider.cs
- LoginUtil.cs
- CodeCompiler.cs
- WSSecureConversationFeb2005.cs
- ADRoleFactoryConfiguration.cs
- FormsIdentity.cs
- XmlSchemaExternal.cs
- PrintPreviewControl.cs
- ActivityBuilderXamlWriter.cs
- EntityDesignerDataSourceView.cs
- DataBoundControl.cs
- EventBookmark.cs
- FocusManager.cs
- PropertyEmitter.cs
- TraceContext.cs
- ContentIterators.cs
- WCFModelStrings.Designer.cs
- AssemblyInfo.cs
- X509InitiatorCertificateServiceElement.cs
- SystemException.cs
- Margins.cs
- XmlSchemaAny.cs
- Connection.cs
- RepeatButtonAutomationPeer.cs
- XmlEventCache.cs
- SafeSystemMetrics.cs
- HeaderedItemsControl.cs
- UrlAuthFailureHandler.cs
- TextTreeInsertUndoUnit.cs
- StreamInfo.cs
- MultiBindingExpression.cs
- PerformanceCounter.cs
- AttachedAnnotation.cs
- FtpWebRequest.cs
- HtmlInputFile.cs
- EntityProxyFactory.cs
- CombinedGeometry.cs
- XmlElementCollection.cs
- WebHttpBinding.cs
- SimpleBitVector32.cs
- ConfigurationValidatorAttribute.cs
- AdapterUtil.cs
- CodeAccessSecurityEngine.cs
- ScriptManager.cs
- EncryptedType.cs
- WbmpConverter.cs
- ConfigurationValue.cs
- DataKeyCollection.cs
- CqlWriter.cs
- LingerOption.cs
- XmlSerializationWriter.cs
- CompensateDesigner.cs