FileWebRequest::BeginGetResponse Method (AsyncCallback^, Object^)
.NET Framework (current version)
Begins an asynchronous request for a file system resource.
Assembly: System (in System.dll)
public: [HostProtectionAttribute(SecurityAction::LinkDemand, ExternalThreading = true)] virtual IAsyncResult^ BeginGetResponse( AsyncCallback^ callback, Object^ state ) override
Parameters
- callback
-
Type:
System::AsyncCallback^
The AsyncCallback delegate.
- state
-
Type:
System::Object^
An object that contains state information for this request.
| Exception | Condition |
|---|---|
| InvalidOperationException | The stream is already in use by a previous call to BeginGetResponse. |
| WebException | The FileWebRequest was aborted. |
The asynchronous callback method that implements the AsyncCallback delegate uses the EndGetResponse method to return the actual FileWebResponse.
The following code example uses the BeginGetResponse method to asynchronously access a file system resource.
public ref class RequestDeclare { public: FileWebRequest^ myFileWebRequest; RequestDeclare() { myFileWebRequest = nullptr; } }; ref class FileWebRequest_resbeginend { public: static ManualResetEvent^ allDone = gcnew ManualResetEvent( false ); static void RespCallback( IAsyncResult^ ar ) { // State of request is asynchronous. RequestDeclare^ requestDeclare = dynamic_cast<RequestDeclare^>(ar->AsyncState); FileWebRequest^ myFileWebRequest = requestDeclare->myFileWebRequest; // End the Asynchronus request by calling the 'EndGetResponse()' method. FileWebResponse^ myFileWebResponse = dynamic_cast<FileWebResponse^>(myFileWebRequest->EndGetResponse( ar )); // Reade the response into Stream. StreamReader^ streamReader = gcnew StreamReader( myFileWebResponse->GetResponseStream() ); array<Char>^readBuffer = gcnew array<Char>(256); int count = streamReader->Read( readBuffer, 0, 256 ); Console::WriteLine( "The contents of the file are :\n" ); while ( count > 0 ) { String^ str = gcnew String( readBuffer,0,count ); Console::WriteLine( str ); count = streamReader->Read( readBuffer, 0, 256 ); } streamReader->Close(); // Release the response Object* resources. myFileWebResponse->Close(); allDone->Set(); Console::WriteLine( "File reading is over." ); } }; int main() { array<String^>^args = Environment::GetCommandLineArgs(); if ( args->Length < 2 ) { Console::WriteLine( "\nPlease enter the file name as command line parameter:" ); Console::WriteLine( "Usage:FileWebRequest_resbeginend <systemname>/<sharedfoldername>/<filename>\n" ); Console::WriteLine( "Example:FileWebRequest_resbeginend shafeeque/shaf/hello.txt" ); } else { try { // Place a 'Webrequest'. WebRequest^ myWebRequest = WebRequest::Create( String::Concat( "file://", args[ 1 ] ) ); // Create an instance of the 'RequestDeclare' and associating the 'myWebRequest' to it. RequestDeclare^ myRequestDeclare = gcnew RequestDeclare; myRequestDeclare->myFileWebRequest = dynamic_cast<FileWebRequest^>(myWebRequest); // Begin the Asynchronous request for getting file content using 'BeginGetResponse()' method. IAsyncResult^ asyncResult = dynamic_cast<IAsyncResult^>(myRequestDeclare->myFileWebRequest->BeginGetResponse( gcnew AsyncCallback( &FileWebRequest_resbeginend::RespCallback ), myRequestDeclare )); FileWebRequest_resbeginend::allDone->WaitOne(); } catch ( ArgumentNullException^ e ) { Console::WriteLine( "ArgumentNullException is : {0}", e->Message ); } catch ( UriFormatException^ e ) { Console::WriteLine( "UriFormatException is : {0}", e->Message ); } } }
.NET Framework
Available since 1.1
Available since 1.1
Show: