FileWebRequest.EndGetRequestStream(IAsyncResult) 方法      
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
结束对 Stream 实例的异步请求,应用程序使用该实例写入数据。
public:
 override System::IO::Stream ^ EndGetRequestStream(IAsyncResult ^ asyncResult);public override System.IO.Stream EndGetRequestStream(IAsyncResult asyncResult);override this.EndGetRequestStream : IAsyncResult -> System.IO.StreamPublic Overrides Function EndGetRequestStream (asyncResult As IAsyncResult) As Stream参数
- asyncResult
- IAsyncResult
引用对流的挂起请求的 IAsyncResult。
返回
应用程序用于写入数据的 Stream 对象。
例外
              asyncResult 为 null。
示例
以下示例使用 EndGetRequestStream 方法结束对 Stream 对象的异步请求。
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 方法启动的异步流请求。
注意
若要避免垃圾回收的计时问题,请务必通过在调用 方法后对 方法返回GetResponseStream的流调用 Close 方法来关闭响应流EndGetResponse。