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
- HierarchicalDataTemplate.cs
- WebInvokeAttribute.cs
- TextCompositionEventArgs.cs
- ServiceHostingEnvironment.cs
- SerializationObjectManager.cs
- TemplateBamlRecordReader.cs
- SettingsAttributes.cs
- AstNode.cs
- TypeExtension.cs
- BehaviorEditorPart.cs
- SerializationStore.cs
- ContainerParaClient.cs
- Border.cs
- BitmapCodecInfo.cs
- NodeLabelEditEvent.cs
- WebPartHeaderCloseVerb.cs
- ConsumerConnectionPoint.cs
- OrderedDictionary.cs
- EncryptedPackage.cs
- CompositeScriptReference.cs
- MimeTypePropertyAttribute.cs
- RightNameExpirationInfoPair.cs
- ByteStreamMessage.cs
- InternalConfigHost.cs
- ImageCreator.cs
- MarshalDirectiveException.cs
- EntityDataSourceDataSelection.cs
- ControlPropertyNameConverter.cs
- Border.cs
- CodeParameterDeclarationExpression.cs
- DataGridViewDataErrorEventArgs.cs
- RegisteredScript.cs
- DefaultObjectMappingItemCollection.cs
- XmlAttributeProperties.cs
- OuterGlowBitmapEffect.cs
- ControlBuilder.cs
- _FtpDataStream.cs
- HttpContext.cs
- SplashScreen.cs
- sqlinternaltransaction.cs
- ValueConversionAttribute.cs
- DataGridView.cs
- TrackBar.cs
- ComponentManagerBroker.cs
- DataGridSortCommandEventArgs.cs
- ThicknessAnimationUsingKeyFrames.cs
- SequentialOutput.cs
- SortedDictionary.cs
- util.cs
- HttpCacheParams.cs
- MenuItemStyleCollection.cs
- CriticalExceptions.cs
- DataGridViewRow.cs
- PhysicalAddress.cs
- DockingAttribute.cs
- FlowStep.cs
- TreeNodeCollectionEditor.cs
- VersionedStreamOwner.cs
- ModuleBuilder.cs
- Rss20ItemFormatter.cs
- CommonDialog.cs
- XmlSchemaExporter.cs
- AspNetCacheProfileAttribute.cs
- _ListenerRequestStream.cs
- DotNetATv1WindowsLogEntryDeserializer.cs
- IntPtr.cs
- HtmlSelect.cs
- BidOverLoads.cs
- ControlIdConverter.cs
- IncrementalCompileAnalyzer.cs
- TextTreeFixupNode.cs
- NativeMethods.cs
- XAMLParseException.cs
- TextEditorParagraphs.cs
- ConfigsHelper.cs
- SinglePhaseEnlistment.cs
- FormsAuthenticationEventArgs.cs
- compensatingcollection.cs
- GridView.cs
- DataConnectionHelper.cs
- ValueUtilsSmi.cs
- Parallel.cs
- DllNotFoundException.cs
- RangeValuePatternIdentifiers.cs
- ConfigurationLockCollection.cs
- BuildResult.cs
- BooleanStorage.cs
- HtmlUtf8RawTextWriter.cs
- NativeRecognizer.cs
- TagPrefixAttribute.cs
- BitmapEffectInput.cs
- XmlQueryStaticData.cs
- DependencyPropertyDescriptor.cs
- PublishLicense.cs
- DrawingGroup.cs
- Object.cs
- ContextMenuStrip.cs
- XmlSchemaSimpleContent.cs
- SqlFileStream.cs
- PackageProperties.cs