FileWebRequest.BeginGetRequestStream(AsyncCallback, Object) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
데이터를 쓰는 데 사용할 Stream 개체에 대한 비동기 요청을 시작합니다.
public:
override IAsyncResult ^ BeginGetRequestStream(AsyncCallback ^ callback, System::Object ^ state);
public override IAsyncResult BeginGetRequestStream(AsyncCallback? callback, object? state);
public override IAsyncResult BeginGetRequestStream(AsyncCallback callback, object state);
override this.BeginGetRequestStream : AsyncCallback * obj -> IAsyncResult
Public Overrides Function BeginGetRequestStream (callback As AsyncCallback, state As Object) As IAsyncResult
매개 변수
- callback
- AsyncCallback
AsyncCallback 대리자입니다.
- state
- Object
이 요청에 대한 상태 정보를 포함하는 개체입니다.
반환
비동기 요청을 참조하는 IAsyncResult입니다.
예외
속성은 MethodGET
이고 애플리케이션은 스트림에 씁니다.
스트림이 BeginGetRequestStream(AsyncCallback, Object)에 대한 이전 호출에서 사용되고 있는 경우
쓰기 스트림을 사용할 수 없는 경우
FileWebRequest가 중단되었습니다.
예제
다음 코드 예제에서는 를 사용하여 BeginGetRequestStream 개체에 대한 비동기 요청을 만듭니다 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
설명
메서드는 BeginGetRequestStream 파일 시스템 리소스에 데이터를 보내는 데 사용되는 스트림에 대한 비동기 요청을 시작합니다. 대리자를 AsyncCallback 구현하는 콜백 메서드는 메서드를 EndGetRequestStream 사용하여 요청 스트림을 반환합니다.