UdpClient.BeginReceive(AsyncCallback, Object) Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Tar emot ett datagram från en fjärrvärd asynkront.
public:
IAsyncResult ^ BeginReceive(AsyncCallback ^ requestCallback, System::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
Parametrar
- requestCallback
- AsyncCallback
Ett AsyncCallback ombud som refererar till den metod som ska anropas när åtgärden är klar.
- state
- Object
Ett användardefinierat objekt som innehåller information om mottagningsåtgärden. Det här objektet skickas till ombudet requestCallback när åtgärden är klar.
Returer
Ett IAsyncResult objekt som refererar till den asynkrona mottagningen.
Exempel
I följande kodexempel används BeginReceive för att asynkront ta emot ett serversvar.
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);
}
}
Kommentarer
Den asynkrona BeginReceive åtgärden måste slutföras genom att anropa EndReceive metoden. Metoden anropas vanligtvis av ombudet requestCallback .
Den här metoden blockeras inte förrän åtgärden har slutförts. Om du vill blockera tills åtgärden har slutförts använder du Receive metoden .
Detaljerad information om hur du använder den asynkrona programmeringsmodellen finns i Anropa synkrona metoder asynkront.