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
- WmfPlaceableFileHeader.cs
- ThreadAbortException.cs
- TemplateManager.cs
- DataKeyPropertyAttribute.cs
- RoutedEventConverter.cs
- GenericPrincipal.cs
- StopStoryboard.cs
- HttpServerVarsCollection.cs
- DeobfuscatingStream.cs
- DataControlButton.cs
- DBConnectionString.cs
- ChangesetResponse.cs
- LookupBindingPropertiesAttribute.cs
- TabOrder.cs
- Mutex.cs
- ReferenceEqualityComparer.cs
- PageVisual.cs
- ItemCollection.cs
- NameTable.cs
- Win32.cs
- NegotiateStream.cs
- ColumnResult.cs
- NativeMethodsOther.cs
- BuildProviderCollection.cs
- Vector3DValueSerializer.cs
- ParentQuery.cs
- ScalarConstant.cs
- LocatorManager.cs
- DBSchemaTable.cs
- TypedElement.cs
- Serialization.cs
- FileIOPermission.cs
- TransformPattern.cs
- TextEffectCollection.cs
- EntityDesignerUtils.cs
- DbMetaDataCollectionNames.cs
- CustomAssemblyResolver.cs
- BuildProvidersCompiler.cs
- PowerStatus.cs
- KeyValuePairs.cs
- InstancePersistenceContext.cs
- SqlCommand.cs
- _NtlmClient.cs
- ScriptingRoleServiceSection.cs
- OleStrCAMarshaler.cs
- TimelineClockCollection.cs
- IDQuery.cs
- Underline.cs
- DrawingImage.cs
- HitTestResult.cs
- HexParser.cs
- Expression.cs
- CodeValidator.cs
- WebServiceReceive.cs
- MessageSecurityOverMsmqElement.cs
- PreviewPrintController.cs
- PointAnimationBase.cs
- QuaternionIndependentAnimationStorage.cs
- ListControl.cs
- DummyDataSource.cs
- ValueConversionAttribute.cs
- ReadOnlyDataSourceView.cs
- Italic.cs
- CodePrimitiveExpression.cs
- AdapterUtil.cs
- DynamicDataManager.cs
- AssociativeAggregationOperator.cs
- AutomationPatternInfo.cs
- BitmapEffectCollection.cs
- AppSettings.cs
- MultipartIdentifier.cs
- Profiler.cs
- EventDescriptorCollection.cs
- TextTreeDeleteContentUndoUnit.cs
- TextRenderer.cs
- XmlWellformedWriter.cs
- AlternationConverter.cs
- storepermissionattribute.cs
- OneWayChannelFactory.cs
- HandlerFactoryWrapper.cs
- Propagator.Evaluator.cs
- InputEventArgs.cs
- ThrowHelper.cs
- DbExpressionVisitor.cs
- SelectionRangeConverter.cs
- FieldNameLookup.cs
- Soap.cs
- PagesSection.cs
- XmlDataSource.cs
- MessageQueueTransaction.cs
- UnionExpr.cs
- DataGridItemEventArgs.cs
- Util.cs
- SQLChars.cs
- SpecialNameAttribute.cs
- NativeMethods.cs
- DictionaryItemsCollection.cs
- BindingNavigator.cs
- ToolTipAutomationPeer.cs
- safemediahandle.cs