UdpClient.BeginReceive(AsyncCallback, Object) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
データグラムをリモート ホストから非同期的に受信します。
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
パラメーター
- requestCallback
- AsyncCallback
操作の完了時に呼び出すメソッドを参照する AsyncCallback デリゲート。
- state
- Object
受信操作に関する情報を格納するユーザー定義のオブジェクト。 このオブジェクトは、操作の完了時に requestCallback
デリゲートに渡されます。
戻り値
非同期の受信を参照する IAsyncResult オブジェクト。
例
次のコード例では、 を使用 BeginReceive してサーバー応答を非同期的に受信します。
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);
}
}
注釈
非同期 BeginReceive 操作は、 メソッドを呼び出して完了する EndReceive 必要があります。 通常、 メソッドはデリゲートによって requestCallback
呼び出されます。
このメソッドは、操作が完了するまでブロックしません。 操作が完了するまでブロックするには、 メソッドを使用します Receive 。
非同期プログラミング モデルの使用の詳細については、「 同期メソッドの非同期呼び出し」を参照してください。