共用方式為


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 物件,由應用程式用來寫入資料。

例外狀況

asyncResultnull

範例

下列範例會 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 異步數據流要求。

注意

若要避免垃圾收集的計時問題,請務必在呼叫 方法之後EndGetResponse,在方法傳回的GetResponseStream數據流上呼叫 Close 方法,以關閉響應數據流。

適用於

另請參閱