次の方法で共有


FileWebRequest.EndGetRequestStream メソッド

アプリケーションがデータを書き込むために使用する Stream インスタンスの非同期要求を終了します。

Overrides Public Function EndGetRequestStream( _
   ByVal asyncResult As IAsyncResult _) As Stream
[C#]
public override Stream EndGetRequestStream(IAsyncResultasyncResult);
[C++]
public: Stream* EndGetRequestStream(IAsyncResult* asyncResult);
[JScript]
public override function EndGetRequestStream(
   asyncResult : IAsyncResult) : Stream;

パラメータ

  • asyncResult
    ストリームの保留中の要求を参照する IAsyncResult

戻り値

アプリケーションがデータを書き込むために使用する Stream インスタンス。

例外

例外の種類 条件
ArgumentNullException asyncResult が null 参照 (Visual Basic では Nothing) です。

解説

EndGetRequestStream メソッドは、 BeginGetRequestStream メソッドが開始したストリームの非同期要求を完了します。

メモ   ガベージ コレクションのタイミングに関する問題を回避するには、 EndGetResponse を呼び出した後に、 GetResponseStream によって返されるストリームの Close メソッドを呼び出して、応答ストリームを閉じてください。

使用例

[Visual Basic, C#, C++] EndGetRequestStream メソッドを使用して、 Stream インスタンスに対する非同期要求を終了する例を次に示します。

 
Public Class RequestDeclare
    Public myFileWebRequest As FileWebRequest
    Public userinput As [String]
    
    
    Public Sub New()
        myFileWebRequest = Nothing
    End Sub ' New
End Class ' RequestDeclare


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 'Main
    
    
    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 ' ReadCallback 

[C#] 

    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);
          }                

        }

[C++] 
public __gc class RequestDeclare {
public:
   FileWebRequest*  myFileWebRequest;
   String*  userinput;

   RequestDeclare() {
      myFileWebRequest = 0;
   }
};

__gc class FileWebRequest_reqbeginend
{
public:
   static ManualResetEvent * allDone = new 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 = new ASCIIEncoding();
         Byte byteArray[] = encoder->GetBytes(sendToFile);

         // Write to the stream.
         readStream->Write(byteArray, 0, sendToFile->Length);
         readStream->Close();
         allDone->Set();

         Console::WriteLine(S"\nThe String you entered was successfully written into the file.");
         Console::WriteLine(S"\nPress Enter to continue.");

      } catch (ApplicationException* e) {
         Console::WriteLine(S"ApplicationException is : {0}", e->Message);
      }
   }
};

int main() {
   String* args[] = Environment::GetCommandLineArgs();
   if (args->Length < 2) {
      Console::WriteLine(S"\nPlease enter the file name as command line parameter:");
      Console::WriteLine(S"Usage:FileWebRequest_reqbeginend <systemname>/<sharedfoldername>/<filename>\n");
      Console::WriteLine(S"Example:FileWebRequest_reqbeginend shafeeque/shaf/hello.txt");
   } else {
      try {

         // Place a webrequest.
         WebRequest* myWebRequest= WebRequest::Create(String::Concat(S"file://", args[1]));

         // Create an instance of the 'RequestDeclare' and associate the 'myWebRequest' to it.
         RequestDeclare* requestDeclare = new RequestDeclare();
         requestDeclare->myFileWebRequest = dynamic_cast<FileWebRequest*>(myWebRequest);
         // Set the 'Method' property of 'FileWebRequest' Object* to 'POST' method.
         requestDeclare->myFileWebRequest->Method=S"POST";
         Console::WriteLine(S"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(new AsyncCallback(0, 
            &FileWebRequest_reqbeginend::ReadCallback), requestDeclare));
         FileWebRequest_reqbeginend::allDone->WaitOne();

         Console::Read();
      } catch (ProtocolViolationException* e) {
         Console::WriteLine(S"ProtocolViolationException is : {0}", e->Message);
      } catch (InvalidOperationException* e) {
         Console::WriteLine(S"InvalidOperationException is : {0}", e->Message);
      } catch (UriFormatException* e) {
         Console::WriteLine(S"UriFormatExceptionException is : {0}", e->Message);
      }
   }
}   

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

FileWebRequest クラス | FileWebRequest メンバ | System.Net 名前空間 | GetRequestStream | BeginGetRequestStream | 非同期要求の作成