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
- ComponentGuaranteesAttribute.cs
- Light.cs
- ColorTranslator.cs
- SqlRowUpdatingEvent.cs
- PolicyManager.cs
- SafeHandles.cs
- UnmanagedMemoryStream.cs
- BitmapEffectDrawingContent.cs
- ObjectListComponentEditor.cs
- TransactionProxy.cs
- ContextMarshalException.cs
- DesignTimeParseData.cs
- DecoratedNameAttribute.cs
- LicenseProviderAttribute.cs
- UserControlCodeDomTreeGenerator.cs
- SqlIdentifier.cs
- SapiRecoContext.cs
- DataGridColumn.cs
- StreamGeometry.cs
- SqlUtils.cs
- Console.cs
- RoleService.cs
- WebServiceErrorEvent.cs
- MemoryRecordBuffer.cs
- ParentUndoUnit.cs
- ToolStripPanelCell.cs
- XmlDataContract.cs
- CodeGeneratorOptions.cs
- XPathDescendantIterator.cs
- SqlTriggerContext.cs
- HelpProvider.cs
- shaper.cs
- FileDialogCustomPlace.cs
- CollectionViewGroup.cs
- DataServiceResponse.cs
- CodeTypeDeclarationCollection.cs
- GetPageCompletedEventArgs.cs
- DataMember.cs
- ItemMap.cs
- Classification.cs
- Transform3DGroup.cs
- serverconfig.cs
- WorkflowOperationInvoker.cs
- FormViewModeEventArgs.cs
- IfElseDesigner.xaml.cs
- CriticalFinalizerObject.cs
- WindowsProgressbar.cs
- TemplateXamlParser.cs
- SatelliteContractVersionAttribute.cs
- LinkArea.cs
- NCryptSafeHandles.cs
- LabelLiteral.cs
- TimeSpanConverter.cs
- DesignerCategoryAttribute.cs
- ParsedAttributeCollection.cs
- VirtualizingStackPanel.cs
- HwndKeyboardInputProvider.cs
- PathParser.cs
- AnonymousIdentificationModule.cs
- CounterSampleCalculator.cs
- SiteMapNodeItemEventArgs.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- Vector3DValueSerializer.cs
- DataError.cs
- SmtpLoginAuthenticationModule.cs
- WizardForm.cs
- ThemeableAttribute.cs
- RoutedEventValueSerializer.cs
- Normalization.cs
- PartialClassGenerationTask.cs
- SQLMembershipProvider.cs
- DelegatingTypeDescriptionProvider.cs
- XmlResolver.cs
- AnonymousIdentificationModule.cs
- Marshal.cs
- RectangleConverter.cs
- MimeXmlReflector.cs
- ApplicationId.cs
- EncryptedPackageFilter.cs
- EarlyBoundInfo.cs
- ResourceDictionary.cs
- SEHException.cs
- TabletCollection.cs
- WorkflowService.cs
- HttpCachePolicy.cs
- BitConverter.cs
- TransactionFlowProperty.cs
- ConnectionManagementElement.cs
- CoreSwitches.cs
- _Win32.cs
- MatrixTransform.cs
- TransformedBitmap.cs
- StickyNoteHelper.cs
- SynchronizedDispatch.cs
- ReservationCollection.cs
- PermissionAttributes.cs
- DataSourceExpressionCollection.cs
- ObjectDataSourceEventArgs.cs
- FlowDocumentPage.cs
- FormCollection.cs