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.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 닫아야 합니다.
적용 대상
추가 정보
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET