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
- StatusBarPanelClickEvent.cs
- ExpressionVisitor.cs
- StringUtil.cs
- Component.cs
- Canvas.cs
- Help.cs
- GridItemPatternIdentifiers.cs
- PaintEvent.cs
- WebPartVerb.cs
- Metadata.cs
- MetadataArtifactLoaderFile.cs
- TimeoutValidationAttribute.cs
- SortQueryOperator.cs
- SafeTokenHandle.cs
- TraceSection.cs
- RTLAwareMessageBox.cs
- LookupNode.cs
- XPathSelectionIterator.cs
- EditingMode.cs
- HelloOperationAsyncResult.cs
- SemaphoreSlim.cs
- Help.cs
- DataGridCellsPanel.cs
- TypeDescriptionProvider.cs
- XmlLangPropertyAttribute.cs
- Header.cs
- DesignerAttribute.cs
- ManagedFilter.cs
- CannotUnloadAppDomainException.cs
- EventToken.cs
- XmlFormatReaderGenerator.cs
- HostingEnvironmentException.cs
- ExecutionEngineException.cs
- AttachedPropertyBrowsableWhenAttributePresentAttribute.cs
- SelectorItemAutomationPeer.cs
- ListViewAutomationPeer.cs
- CellQuery.cs
- PreloadHost.cs
- RepeaterCommandEventArgs.cs
- CompilationSection.cs
- DateTimeSerializationSection.cs
- altserialization.cs
- PerspectiveCamera.cs
- AssemblyBuilder.cs
- SchemaElementLookUpTable.cs
- RijndaelManagedTransform.cs
- MatrixTransform3D.cs
- PackageProperties.cs
- EncoderParameters.cs
- SQLSingleStorage.cs
- Model3DGroup.cs
- TextComposition.cs
- _AutoWebProxyScriptHelper.cs
- DiscoveryDocument.cs
- PriorityRange.cs
- ToolStripContentPanel.cs
- IHttpResponseInternal.cs
- WindowsFormsHelpers.cs
- _NtlmClient.cs
- EUCJPEncoding.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- FrameworkRichTextComposition.cs
- FieldAccessException.cs
- EdmSchemaAttribute.cs
- Activity.cs
- CodeLabeledStatement.cs
- CodeDirectionExpression.cs
- ScrollViewerAutomationPeer.cs
- DataGridViewBindingCompleteEventArgs.cs
- LinqDataSourceView.cs
- SecUtil.cs
- InvokeBinder.cs
- WebPartConnectionsEventArgs.cs
- DesignerDataView.cs
- ActivationArguments.cs
- SoapAttributeOverrides.cs
- GPStream.cs
- Quaternion.cs
- ToolZone.cs
- DataTable.cs
- RefreshPropertiesAttribute.cs
- SmtpCommands.cs
- _NegotiateClient.cs
- MulticastDelegate.cs
- SQLCharsStorage.cs
- BaseServiceProvider.cs
- MetadataStore.cs
- CapabilitiesRule.cs
- xdrvalidator.cs
- XsltFunctions.cs
- DesignConnectionCollection.cs
- LinqToSqlWrapper.cs
- StringAnimationUsingKeyFrames.cs
- ToolboxItemAttribute.cs
- SaveFileDialog.cs
- AxParameterData.cs
- DataListCommandEventArgs.cs
- ColorAnimationBase.cs
- HiddenField.cs
- TogglePatternIdentifiers.cs