UdpClient.BeginReceive(AsyncCallback, Object) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Recebe um datagrama de um host remoto de forma assíncrona.
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
Parâmetros
- requestCallback
- AsyncCallback
Um AsyncCallback delegado que faz referência ao método a invocar quando a operação estiver completa.
- state
- Object
Um objeto definido pelo utilizador que contém informação sobre a operação de receção. Este objeto é passado ao requestCallback delegado quando a operação está concluída.
Devoluções
Um IAsyncResult objeto que faz referência ao recebimento assíncrono.
Exemplos
O seguinte exemplo de código é usado BeginReceive para receber assíncronamente uma resposta de servidor.
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);
}
}
Observações
A operação assíncrona BeginReceive deve ser concluída chamando o EndReceive método. Normalmente, o método é invocado pelo requestCallback delegado.
Este método não bloqueia até que a operação esteja completa. Para bloquear até a operação estar concluída, use o Receive método.
Para informações detalhadas sobre a utilização do modelo de programação assíncrona, veja Chamar Métodos Síncronos Assíncronos.