如何在回调中return?
How to return in a callback?
我正在使用 C# 套接字,我需要在异步回调中 return 一个值,或者以某种方式从方法中获取我想要的值并以某种方式 return 它。这是我拥有的:
public class UdpState
{
public UdpClient u;
public IPEndPoint e;
}
class NetworkListener
{
private const int port = 1222;
public static void ReceiveCallback(IAsyncResult iar)
{
UdpClient u = (UdpClient)((UdpState)(iar.AsyncState)).u;
IPEndPoint e = (IPEndPoint)((UdpState)(iar.AsyncState)).e;
// line I need to return (byte[]): u.EndReceive(iar, ref e);
}
public static void StartListeningForMessage()
{
bool done = false;
IPEndPoint ipEnd = new IPEndPoint(IPAddress.Any, port);
UdpClient listener = new UdpClient(ipEnd);
UdpState udps = new UdpState();
udps.e = ipEnd;
udps.u = listener;
try
{
while (!done)
{
listener.BeginReceive(new AsyncCallback(ReceiveCallback), udps);
}
}
catch (Exception e)
{
}
}
如您所见,在我的 ReceiveCallback 方法的最后一行,它说明了我想要的 return。不过,我无法直接 return 进行任何回调。我能做什么?
我发现我可以制作一个静态字节[]。之前没用因为需要初始化,所以我做了public static byte[] = new byte[0].
我正在使用 C# 套接字,我需要在异步回调中 return 一个值,或者以某种方式从方法中获取我想要的值并以某种方式 return 它。这是我拥有的:
public class UdpState
{
public UdpClient u;
public IPEndPoint e;
}
class NetworkListener
{
private const int port = 1222;
public static void ReceiveCallback(IAsyncResult iar)
{
UdpClient u = (UdpClient)((UdpState)(iar.AsyncState)).u;
IPEndPoint e = (IPEndPoint)((UdpState)(iar.AsyncState)).e;
// line I need to return (byte[]): u.EndReceive(iar, ref e);
}
public static void StartListeningForMessage()
{
bool done = false;
IPEndPoint ipEnd = new IPEndPoint(IPAddress.Any, port);
UdpClient listener = new UdpClient(ipEnd);
UdpState udps = new UdpState();
udps.e = ipEnd;
udps.u = listener;
try
{
while (!done)
{
listener.BeginReceive(new AsyncCallback(ReceiveCallback), udps);
}
}
catch (Exception e)
{
}
}
如您所见,在我的 ReceiveCallback 方法的最后一行,它说明了我想要的 return。不过,我无法直接 return 进行任何回调。我能做什么?
我发现我可以制作一个静态字节[]。之前没用因为需要初始化,所以我做了public static byte[] = new byte[0].