Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / infocard / Service / managed / Microsoft / InfoCards / BeginGetFileNameFromUserRequest.cs / 1 / BeginGetFileNameFromUserRequest.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace Microsoft.InfoCards { using System; using System.IO; using IDT = Microsoft.InfoCards.Diagnostics.InfoCardTrace; // // Summary // Processes beginning of asynchronous get file name from user request. // internal class BeginGetFileNameFromUserRequest : UIAgentAsyncBeginRequest { bool m_getContent; // Stores whether file contents are to be returned. string m_arguments; // Stores arguments passed to agent on user desktop. // // Summary // Constructs request. // // Arguments // rpcHandle - Specifies the RPC context handle. // inArgs - Specifies the stream to hold the input arguments. // outArgs - Specifies the stream to hold the output arguments. // parent - Specifies the parent UI request. // public BeginGetFileNameFromUserRequest( IntPtr rpcHandle, Stream inArgs, Stream outArgs, ClientUIRequest parent ) : base( rpcHandle, inArgs, outArgs, parent ) { } // // Summary // Reads input arguments from stream. // // Arguments // reader - Specifies a binary reader. // protected override void OnMarshalAsyncInArgs( BinaryReader reader ) { m_getContent = reader.ReadBoolean(); m_arguments = Utility.DeserializeString( reader ); } // // Summary // Gets file from user. // // Remarks // This method is called from a thread pool thread. // // Arguments // asyncParams - Specifies asynchronous parameters. // protected override object AsyncExecute( AsyncParams asyncParams ) { uint error = 0; string fileName = String.Empty; GetFileNameResult result = new GetFileNameResult(); // // Start agent on user desktop to get file from user. // using( SystemIdentity lsa = new SystemIdentity( true ) ) { error = NativeMcppMethods.CreateAndWaitForFileOpenDialogWrapper( m_arguments, RequestorIdentity, ParentRequest.CallerPid, ref fileName ); } if( 0 == error ) { try { // // Store file name. // result.FileName = fileName; // // If contents were requested and user choose a file then read and store contents. // if( m_getContent && !String.IsNullOrEmpty( fileName ) ) { FileInfo f = new FileInfo( fileName ); using( FileStream file = File.OpenRead( fileName ) ) { BinaryReader reader = new InfoCardBinaryReader( file ); result.FileContent = reader.ReadBytes( (int) f.Length ); } } } catch( Exception e ) { if( IDT.IsFatal( e ) ) { throw; } throw IDT.ThrowHelperError( new FileAccessException( SR.GetString( SR.ServiceInaccessibleFile ), e ) ); } } else { IDT.TraceDebug( "ICARDACCESS:Failed to create process with error {0}", error ); } return result; } // // Summary // The ability to cancel this request is not needed as the user desktop is active and the agent on this desktop // may be closed to end this request without choosing a file. // protected override void AsyncCancel() { ; } } } // 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
- ClientScriptManager.cs
- MultiAsyncResult.cs
- OpenTypeLayout.cs
- TreeNodeStyleCollection.cs
- WSSecurityTokenSerializer.cs
- CompModSwitches.cs
- InputBuffer.cs
- XamlPathDataSerializer.cs
- XmlILCommand.cs
- SmiRecordBuffer.cs
- RuntimeHandles.cs
- ElementNotEnabledException.cs
- EncoderBestFitFallback.cs
- ResourceContainerWrapper.cs
- TypeRestriction.cs
- BaseCodePageEncoding.cs
- _TLSstream.cs
- DeclarativeCatalogPart.cs
- SmtpDigestAuthenticationModule.cs
- RemotingConfiguration.cs
- DesignerTransactionCloseEvent.cs
- LayoutDump.cs
- FormatterConverter.cs
- DocumentGrid.cs
- InternalConfigConfigurationFactory.cs
- QilNode.cs
- RectAnimationUsingKeyFrames.cs
- BasicExpandProvider.cs
- PermissionAttributes.cs
- DependencyObject.cs
- ComplexTypeEmitter.cs
- XmlnsDictionary.cs
- UserInitiatedRoutedEventPermission.cs
- DllNotFoundException.cs
- HMAC.cs
- DispatchChannelSink.cs
- SqlDataReader.cs
- Encoding.cs
- SoapSchemaMember.cs
- TimelineGroup.cs
- SafeRegistryHandle.cs
- ExtractedStateEntry.cs
- EventRouteFactory.cs
- ImageClickEventArgs.cs
- FileSystemEventArgs.cs
- RoleGroup.cs
- ECDsa.cs
- ContextMenuStrip.cs
- WmlListAdapter.cs
- ColumnResult.cs
- ClientTarget.cs
- WebProxyScriptElement.cs
- TextEncodedRawTextWriter.cs
- DynamicValidatorEventArgs.cs
- BroadcastEventHelper.cs
- DataConnectionHelper.cs
- PaginationProgressEventArgs.cs
- PointCollectionConverter.cs
- LongMinMaxAggregationOperator.cs
- SqlStatistics.cs
- FileChangesMonitor.cs
- BuilderPropertyEntry.cs
- ContextInformation.cs
- ObjectSecurity.cs
- SoapConverter.cs
- TransactionChannelFactory.cs
- IdentityReference.cs
- Error.cs
- X509SubjectKeyIdentifierClause.cs
- SupportingTokenBindingElement.cs
- SplitContainer.cs
- GeometryModel3D.cs
- UriScheme.cs
- AccessedThroughPropertyAttribute.cs
- InvalidStoreProtectionKeyException.cs
- HMACSHA384.cs
- KeyFrames.cs
- PrePrepareMethodAttribute.cs
- DocumentCollection.cs
- SiteMapDataSource.cs
- CollectionBase.cs
- Properties.cs
- ObjectDataSourceMethodEventArgs.cs
- PropertyTabAttribute.cs
- StrongNameSignatureInformation.cs
- InstanceStore.cs
- SHA256Managed.cs
- ModifiableIteratorCollection.cs
- SortedList.cs
- InkCanvasInnerCanvas.cs
- SymbolEqualComparer.cs
- XmlSchemaGroup.cs
- CopyAction.cs
- Bits.cs
- ParserOptions.cs
- XmlDeclaration.cs
- XAMLParseException.cs
- ChangeDirector.cs
- ObjectSecurity.cs
- DesignTimeVisibleAttribute.cs