다음을 통해 공유


FileWebRequest.EndGetRequestStream(IAsyncResult) 메서드

정의

애플리케이션이 데이터를 쓰는 데 사용하는 Stream 인스턴스에 대한 비동기 요청을 종료합니다.

public:
 override System::IO::Stream ^ EndGetRequestStream(IAsyncResult ^ asyncResult);
public override System.IO.Stream EndGetRequestStream (IAsyncResult asyncResult);
override this.EndGetRequestStream : IAsyncResult -> System.IO.Stream
Public Overrides Function EndGetRequestStream (asyncResult As IAsyncResult) As Stream

매개 변수

asyncResult
IAsyncResult

스트림에 대한 보류 중인 요청을 참조하는 IAsyncResult입니다.

반환

애플리케이션에서 데이터를 쓰는 데 사용하는 Stream 개체입니다.

예외

asyncResult이(가) null인 경우

예제

다음 예제에서는 메서드를 EndGetRequestStream 사용하여 개체에 대한 Stream 비동기 요청을 종료합니다.

public ref class RequestDeclare
{
public:
   FileWebRequest^ myFileWebRequest;
   String^ userinput;
   RequestDeclare()
   {
      myFileWebRequest = nullptr;
   }

};

ref class FileWebRequest_reqbeginend
{
public:
   static ManualResetEvent^ allDone = gcnew ManualResetEvent( false );
   static void ReadCallback( IAsyncResult^ ar )
   {
      try
      {
         
         // State of the request is asynchronous.
         RequestDeclare^ requestDeclare = dynamic_cast<RequestDeclare^>(ar->AsyncState);
         FileWebRequest^ myFileWebRequest = requestDeclare->myFileWebRequest;
         String^ sendToFile = requestDeclare->userinput;
         
         // End the Asynchronus request by calling the 'EndGetRequestStream()' method.
         Stream^ readStream = myFileWebRequest->EndGetRequestStream( ar );
         
         // Convert the String* into Byte array.
         ASCIIEncoding^ encoder = gcnew ASCIIEncoding;
         array<Byte>^byteArray = encoder->GetBytes( sendToFile );
         
         // Write to the stream.
         readStream->Write( byteArray, 0, sendToFile->Length );
         readStream->Close();
         allDone->Set();
         Console::WriteLine( "\nThe String you entered was successfully written into the file." );
         Console::WriteLine( "\nPress Enter to continue." );
      }
      catch ( ApplicationException^ e ) 
      {
         Console::WriteLine( "ApplicationException is : {0}", e->Message );
      }

   }

};

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_reqbeginend <systemname>/<sharedfoldername>/<filename>\n" );
      Console::WriteLine( "Example:FileWebRequest_reqbeginend 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 associate the 'myWebRequest' to it.
         RequestDeclare^ requestDeclare = gcnew RequestDeclare;
         requestDeclare->myFileWebRequest = dynamic_cast<FileWebRequest^>(myWebRequest);
         
         // Set the 'Method' property of 'FileWebRequest' Object* to 'POST' method.
         requestDeclare->myFileWebRequest->Method = "POST";
         Console::WriteLine( "Enter the String* you want to write into the file:" );
         requestDeclare->userinput = Console::ReadLine();
         
         // Begin the Asynchronous request for getting file content using 'BeginGetRequestStream()' method .
         IAsyncResult^ r = dynamic_cast<IAsyncResult^>(requestDeclare->myFileWebRequest->BeginGetRequestStream( gcnew AsyncCallback( &FileWebRequest_reqbeginend::ReadCallback ), requestDeclare ));
         FileWebRequest_reqbeginend::allDone->WaitOne();
         Console::Read();
      }
      catch ( ProtocolViolationException^ e ) 
      {
         Console::WriteLine( "ProtocolViolationException is : {0}", e->Message );
      }
      catch ( InvalidOperationException^ e ) 
      {
         Console::WriteLine( "InvalidOperationException is : {0}", e->Message );
      }
      catch ( UriFormatException^ e ) 
      {
         Console::WriteLine( "UriFormatExceptionException is : {0}", e->Message );
      }

   }
}

public class RequestDeclare
{
     public FileWebRequest myFileWebRequest;	
     public String userinput;

    public RequestDeclare()
    {
        myFileWebRequest = null;
    }
}

class FileWebRequest_reqbeginend
{
    public static ManualResetEvent allDone = new ManualResetEvent(false);

    static void Main(string[] args)
    {
      if (args.Length < 1)
      {
        Console.WriteLine("\nPlease enter the file name as command line parameter:");
           Console.WriteLine("Usage:FileWebRequest_reqbeginend <systemname>/<sharedfoldername>/<filename>\nExample:FileWebRequest_reqbeginend shafeeque/shaf/hello.txt");
      }
      else
      {

        try
         {

              // Place a webrequest.
              WebRequest myWebRequest= WebRequest.Create("file://"+args[0]);
        
              // Create an instance of the 'RequestDeclare' and associate the 'myWebRequest' to it.		
              RequestDeclare requestDeclare = new RequestDeclare();
              requestDeclare.myFileWebRequest = (FileWebRequest)myWebRequest;
              // Set the 'Method' property of 'FileWebRequest' object to 'POST' method.
              requestDeclare.myFileWebRequest.Method="POST";
              Console.WriteLine("Enter the string you want to write into the file:");
              requestDeclare.userinput = Console.ReadLine();

              // Begin the Asynchronous request for getting file content using 'BeginGetRequestStream()' method .
              IAsyncResult r=(IAsyncResult) requestDeclare.myFileWebRequest.BeginGetRequestStream(new AsyncCallback(ReadCallback),requestDeclare);			
              allDone.WaitOne();

              Console.Read();
        }
        catch(ProtocolViolationException e)
        {
              Console.WriteLine("ProtocolViolationException is :"+e.Message);
        }
        catch(InvalidOperationException e)
        {
            Console.WriteLine("InvalidOperationException is :"+e.Message);
        }
        catch(UriFormatException e)
        {
            Console.WriteLine("UriFormatExceptionException is :"+e.Message);
         }
     }
    }

    private static void ReadCallback(IAsyncResult ar)
    {	

     try
  {

          // State of the request is asynchronous.
          RequestDeclare requestDeclare=(RequestDeclare) ar.AsyncState;
          FileWebRequest myFileWebRequest=requestDeclare.myFileWebRequest;
          String sendToFile = requestDeclare.userinput;

          // End the Asynchronus request by calling the 'EndGetRequestStream()' method.
          Stream readStream=myFileWebRequest.EndGetRequestStream(ar);
                    
          // Convert the string into byte array.
            
          ASCIIEncoding encoder = new ASCIIEncoding();
          byte[] byteArray = encoder.GetBytes(sendToFile);
        
          // Write to the stream.
          readStream.Write(byteArray,0,sendToFile.Length);
          readStream.Close();
          allDone.Set();
            
          Console.WriteLine("\nThe String you entered was successfully written into the file.");
      Console.WriteLine("\nPress Enter to continue.");	
     }
    catch(ApplicationException e)
      {
          Console.WriteLine("ApplicationException is :"+e.Message);
      }				
    }
Public Class RequestDeclare
    Public myFileWebRequest As FileWebRequest
    Public userinput As [String]
    
    
    Public Sub New()
        myFileWebRequest = Nothing
    End Sub
End Class


Class FileWebRequest_reqbeginend
    Public Shared allDone As New ManualResetEvent(False)
    
    ' Entry point which delegates to C-style main Private Function.
    Public Overloads Shared Sub Main()
        Main(System.Environment.GetCommandLineArgs())
    End Sub
    
    
    Overloads Shared Sub Main(args() As String)
        If args.Length < 2 Then
            Console.WriteLine(ControlChars.Cr + "Please enter the file name as command line parameter:")
            Console.WriteLine("Usage:FileWebRequest_reqbeginend <systemname>/<sharedfoldername>/<filename>")
        Console.WriteLine("Example: FileWebRequest_reqbeginend shafeeque/shaf/hello.txt")
        
        Else
            Try

                ' Place a webrequest.
                Dim myWebRequest As WebRequest = WebRequest.Create(("file://" + args(1)))
                
                ' Create an instance of the 'RequestDeclare' and associate the 'myWebRequest' to it.		
                Dim requestDeclare As New RequestDeclare()
                requestDeclare.myFileWebRequest = CType(myWebRequest, FileWebRequest)
                ' Set the 'Method' property of 'FileWebRequest' object to 'POST' method.
                requestDeclare.myFileWebRequest.Method = "POST"
                Console.WriteLine("Enter the string you want to write into the file:")
                requestDeclare.userinput = Console.ReadLine()
                
                ' Begin the Asynchronous request for getting file content using 'BeginGetRequestStream()' method .
                Dim r As IAsyncResult = CType(requestDeclare.myFileWebRequest.BeginGetRequestStream(AddressOf ReadCallback, requestDeclare), IAsyncResult)
                allDone.WaitOne()
                
                Console.Read()
            Catch e As ProtocolViolationException
                Console.WriteLine(("ProtocolViolationException is :" + e.Message))
            Catch e As InvalidOperationException
                Console.WriteLine(("InvalidOperationException is :" + e.Message))
            Catch e As UriFormatException
                Console.WriteLine(("UriFormatExceptionException is :" + e.Message))
            End Try

        End If 
    End Sub
    
    
    Private Shared Sub ReadCallback(ar As IAsyncResult)
        Try

            ' State of the request is asynchronous.
            Dim requestDeclare As RequestDeclare = CType(ar.AsyncState, RequestDeclare)
            Dim myFileWebRequest As FileWebRequest = requestDeclare.myFileWebRequest
            Dim sendToFile As [String] = requestDeclare.userinput
            
            ' End the Asynchronus request by calling the 'EndGetRequestStream()' method.
            Dim readStream As Stream = myFileWebRequest.EndGetRequestStream(ar)
            
            ' Convert the string into byte array.
            Dim encoder As New ASCIIEncoding()
            Dim byteArray As Byte() = encoder.GetBytes(sendToFile)
            
            ' Write to the stream.
            readStream.Write(byteArray, 0, sendToFile.Length)
            readStream.Close()
            allDone.Set()

            
            Console.WriteLine(ControlChars.Cr +"The String you entered was successfully written into the file.")
            Console.WriteLine(ControlChars.Cr +"Press Enter to continue.")

            Catch e As ApplicationException
            Console.WriteLine(("ApplicationException is :" + e.Message))
        End Try

    End Sub

설명

메서드는 EndGetRequestStream 메서드에 의해 시작된 비동기 스트림 요청을 완료합니다 BeginGetRequestStream .

참고

가비지 수집의 타이밍 문제를 방지하려면 메서드를 호출한 후 메서드에서 반환된 스트림에서 메서드를 호출 Close 하여 응답 스트림을 GetResponseStreamEndGetResponse 닫아야 합니다.

적용 대상

추가 정보