Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / infocard / Service / managed / Microsoft / InfoCards / UIAgentAsyncEndRequest.cs / 1 / UIAgentAsyncEndRequest.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace Microsoft.InfoCards { using System; using System.Collections; using System.Diagnostics; using System.Runtime.InteropServices; using System.Text; using System.IO; using IDT = Microsoft.InfoCards.Diagnostics.InfoCardTrace; // // Summary: // Base class for all Async Completation requests from the UI Agent. // !!!!!! Subclasses should not override OnMarshalOutArgs. !!!!!!! // internal abstract class UIAgentAsyncEndRequest : UIAgentRequest { int m_asyncHandle; bool m_isCompleted; object m_result; bool m_isCancelled; // // Summary: // Creates an new UIAgentAsyncEndRequest // // Arguments: // rpcHandle: The RPC Context handle. // inArgs: The stream to hold the input arguments // outArgs: The stream to hold the output arguments // parent: the parent UI Request // public UIAgentAsyncEndRequest( IntPtr rpcHandle, Stream inArgs, Stream outArgs, ClientUIRequest parent ) : base( rpcHandle, inArgs, outArgs, parent ) { } public object Result { get { IDT.Assert( true == m_isCompleted, "Attempt to pick up async result before completion." ); return m_result; } } public bool IsCancelled { get { IDT.Assert( true == m_isCompleted, "Attempt to pick up async result before completion." ); return m_isCancelled; } } // // Summary: // Read any inbound arguments. // // Remarks: // read the async context handle we send at the end of the Begin call. // protected override void OnMarshalInArgs() { BinaryReader breader = new InfoCardBinaryReader( InArgs, Encoding.Unicode ); m_asyncHandle = breader.ReadInt32(); IDT.Assert( 0 != m_asyncHandle, "null async handle" ); } // // Summary: // Process the request, and wait for the async operation to complete or be canceled. // protected override void OnProcess() { // // Look up this Async operation on the parent request and wait for completion. Return any errors by // throwing the exception. // // // In current implementation, if WaitForAsyncCompletion throws an exception // then no asyncResult is returned, so it is not disposed off by the using statement. // using ( RpcAsyncResult asyncResult = ParentRequest.WaitForAsyncCompletion( m_asyncHandle ) ) { m_isCancelled = asyncResult.IsCanceled; if ( !m_isCancelled ) { m_result = asyncResult.Result; } } m_isCompleted = true; } // // Summary: // This method determines whether the operation was cancelled or not, writes the appropriate indicator, and // then calls OnMarshalAsyncOutArgs if appropriate. // protected sealed override void OnMarshalOutArgs() { BinaryWriter writer = new BinaryWriter( OutArgs, Encoding.Unicode ); writer.Write( IsCancelled ); if ( !IsCancelled ) { OnMarshalAsyncOutArgs( writer ); } } // // Summary: // This is called if the Async operation is not cancelled. // protected virtual void OnMarshalAsyncOutArgs( BinaryWriter writer ) { // // Default is to do nothing. // } } } // 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
- SystemWebCachingSectionGroup.cs
- TextTreeObjectNode.cs
- Rect3DValueSerializer.cs
- DynamicMethod.cs
- CodeDOMProvider.cs
- ThreadStartException.cs
- TextEditorContextMenu.cs
- EntityViewContainer.cs
- ByteStream.cs
- TypeKeyValue.cs
- RadioButtonList.cs
- PersistenceTypeAttribute.cs
- TextPointerBase.cs
- UserControlCodeDomTreeGenerator.cs
- WebResourceAttribute.cs
- XmlSchemaAnyAttribute.cs
- TrustLevelCollection.cs
- DataGridCellEditEndingEventArgs.cs
- ThreadInterruptedException.cs
- UTF7Encoding.cs
- StreamWriter.cs
- VirtualPath.cs
- FileNotFoundException.cs
- WorkflowOwnershipException.cs
- RegistryPermission.cs
- SelectionProcessor.cs
- IntPtr.cs
- AdornerLayer.cs
- SymLanguageType.cs
- ActivityBuilderXamlWriter.cs
- sqlstateclientmanager.cs
- DocumentViewer.cs
- DataAccessException.cs
- Operator.cs
- ConnectorMovedEventArgs.cs
- WsdlParser.cs
- DynamicILGenerator.cs
- TemplateInstanceAttribute.cs
- EdgeProfileValidation.cs
- XmlQueryCardinality.cs
- RelationshipDetailsRow.cs
- sqlmetadatafactory.cs
- WindowsIdentity.cs
- CodeArgumentReferenceExpression.cs
- CompositeKey.cs
- DNS.cs
- DPCustomTypeDescriptor.cs
- SharedUtils.cs
- SystemWebExtensionsSectionGroup.cs
- ServiceHostingEnvironment.cs
- System.Data.OracleClient_BID.cs
- SiteMapNodeItem.cs
- XmlTypeAttribute.cs
- FieldNameLookup.cs
- RtfFormatStack.cs
- UrlAuthFailedErrorFormatter.cs
- AvtEvent.cs
- COM2Properties.cs
- OracleCommandBuilder.cs
- DataTableClearEvent.cs
- LogExtent.cs
- Literal.cs
- ConfigXmlSignificantWhitespace.cs
- GridViewRowCollection.cs
- XmlDocumentSerializer.cs
- Axis.cs
- TransformerInfo.cs
- SoapCommonClasses.cs
- Interfaces.cs
- StringUtil.cs
- TemplateGroupCollection.cs
- HitTestWithPointDrawingContextWalker.cs
- VirtualDirectoryMapping.cs
- SqlServices.cs
- AudioBase.cs
- TextAdaptor.cs
- PeerNearMe.cs
- ColumnResult.cs
- ReadOnlyTernaryTree.cs
- EventProviderWriter.cs
- _ConnectionGroup.cs
- ConfigXmlWhitespace.cs
- TypeDescriptor.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- NGCUIElementCollectionSerializerAsync.cs
- UpdateCommand.cs
- InitializerFacet.cs
- GenerateHelper.cs
- ConnectionStringsExpressionEditor.cs
- BasePropertyDescriptor.cs
- TextServicesLoader.cs
- TryExpression.cs
- XmlAnyElementAttribute.cs
- SimpleWorkerRequest.cs
- ToolStripStatusLabel.cs
- PreProcessInputEventArgs.cs
- VirtualPathData.cs
- ControlLocalizer.cs
- EncodingTable.cs
- DocumentPageView.cs