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
- DataMemberFieldEditor.cs
- XmlSchemaDatatype.cs
- DataGridViewEditingControlShowingEventArgs.cs
- CodeTypeReferenceExpression.cs
- InterleavedZipPartStream.cs
- BreakRecordTable.cs
- Util.cs
- SoapCommonClasses.cs
- FormViewPageEventArgs.cs
- ToolStripItemTextRenderEventArgs.cs
- Array.cs
- EntityObject.cs
- DataSourceXmlSubItemAttribute.cs
- DateTimeOffset.cs
- OutgoingWebRequestContext.cs
- ToolStripButton.cs
- ListBoxItemAutomationPeer.cs
- FileLevelControlBuilderAttribute.cs
- IntSecurity.cs
- PreviewPageInfo.cs
- OperationDescriptionCollection.cs
- HttpVersion.cs
- XmlMapping.cs
- ResolveDuplex11AsyncResult.cs
- CodeStatementCollection.cs
- TreeNodeStyle.cs
- HScrollProperties.cs
- WhereQueryOperator.cs
- XmlArrayItemAttributes.cs
- ScriptResourceAttribute.cs
- CollectionsUtil.cs
- TableParaClient.cs
- Matrix3D.cs
- BevelBitmapEffect.cs
- Directory.cs
- ToolStripItemEventArgs.cs
- CodeNamespaceImportCollection.cs
- Msec.cs
- DBParameter.cs
- ExternalException.cs
- AuthenticationServiceManager.cs
- BitmapEffectCollection.cs
- CapiNative.cs
- PaintValueEventArgs.cs
- ISCIIEncoding.cs
- XamlInt32CollectionSerializer.cs
- CodeSnippetCompileUnit.cs
- CompiledIdentityConstraint.cs
- WebHostScriptMappingsInstallComponent.cs
- SecurityIdentifierElementCollection.cs
- ComponentDispatcherThread.cs
- SapiRecognizer.cs
- SiteMapDataSource.cs
- CacheSection.cs
- PropertyEmitterBase.cs
- EmptyCollection.cs
- WebPartEditVerb.cs
- Convert.cs
- DataGridViewDataConnection.cs
- WebConfigManager.cs
- CompareInfo.cs
- TextTreeText.cs
- SemanticResolver.cs
- SoapAttributeOverrides.cs
- __Error.cs
- ExternalException.cs
- MulticastNotSupportedException.cs
- _SpnDictionary.cs
- WebPartCatalogAddVerb.cs
- NamedObject.cs
- HandlerWithFactory.cs
- EmissiveMaterial.cs
- GeometryDrawing.cs
- WorkflowServiceBehavior.cs
- TextSelectionHighlightLayer.cs
- SuppressMergeCheckAttribute.cs
- EdmFunction.cs
- ComponentGlyph.cs
- DataSourceHelper.cs
- ManualResetEvent.cs
- LocalizabilityAttribute.cs
- DesignerAttribute.cs
- ParameterInfo.cs
- DataGridViewCellValueEventArgs.cs
- ParameterCollection.cs
- ParseElementCollection.cs
- QueryParameter.cs
- ScriptManagerProxy.cs
- DesignerTransactionCloseEvent.cs
- AppDomainProtocolHandler.cs
- ManagementEventArgs.cs
- PersistenceTypeAttribute.cs
- ObjectTag.cs
- _NtlmClient.cs
- NameValueCollection.cs
- LinqDataSourceDisposeEventArgs.cs
- HwndHostAutomationPeer.cs
- FragmentQueryKB.cs
- PeerPresenceInfo.cs
- RunWorkerCompletedEventArgs.cs