UdpClient.BeginReceive(AsyncCallback, Object) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Empfängt asynchron ein Datagramm von einem Remotehost.
public:
IAsyncResult ^ BeginReceive(AsyncCallback ^ requestCallback, System::Object ^ state);
public IAsyncResult BeginReceive(AsyncCallback? requestCallback, object? state);
public IAsyncResult BeginReceive(AsyncCallback requestCallback, object state);
member this.BeginReceive : AsyncCallback * obj -> IAsyncResult
Public Function BeginReceive (requestCallback As AsyncCallback, state As Object) As IAsyncResult
Parameter
- requestCallback
- AsyncCallback
Ein AsyncCallback Delegat, der auf die Methode verweist, die aufgerufen werden soll, wenn der Vorgang abgeschlossen ist.
- state
- Object
Ein benutzerdefiniertes Objekt, das Informationen zum Empfangsvorgang enthält. Dieses Objekt wird an die requestCallback Stellvertretung übergeben, wenn der Vorgang abgeschlossen ist.
Gibt zurück
Ein IAsyncResult Objekt, das auf den asynchronen Empfang verweist.
Beispiele
Im folgenden Codebeispiel wird BeginReceive eine Serverantwort asynchron empfangen.
public struct UdpState
{
public UdpClient u;
public IPEndPoint e;
}
public static bool messageReceived = false;
public static void ReceiveCallback(IAsyncResult ar)
{
UdpClient u = ((UdpState)(ar.AsyncState)).u;
IPEndPoint e = ((UdpState)(ar.AsyncState)).e;
byte[] receiveBytes = u.EndReceive(ar, ref e);
string receiveString = Encoding.ASCII.GetString(receiveBytes);
Console.WriteLine($"Received: {receiveString}");
messageReceived = true;
}
public static void ReceiveMessages()
{
// Receive a message and write it to the console.
IPEndPoint e = new IPEndPoint(IPAddress.Any, s_listenPort);
UdpClient u = new UdpClient(e);
UdpState s = new UdpState();
s.e = e;
s.u = u;
Console.WriteLine("listening for messages");
u.BeginReceive(new AsyncCallback(ReceiveCallback), s);
// Do some work while we wait for a message. For this example, we'll just sleep
while (!messageReceived)
{
Thread.Sleep(100);
}
}
Hinweise
Der asynchrone BeginReceive Vorgang muss durch Aufrufen der EndReceive Methode abgeschlossen werden. In der requestCallback Regel wird die Methode vom Delegaten aufgerufen.
Diese Methode wird erst blockiert, wenn der Vorgang abgeschlossen ist. Um zu blockieren, bis der Vorgang abgeschlossen ist, verwenden Sie die Receive Methode.
Ausführliche Informationen zur Verwendung des asynchronen Programmiermodells finden Sie unter asynchrones Aufrufen synchroner Methoden.