アプリケーションがデータを書き込むために使用する 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 | 非同期要求の作成