Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在回调中返回?_C#_Sockets_Xna - Fatal编程技术网

C# 如何在回调中返回?

C# 如何在回调中返回?,c#,sockets,xna,C#,Sockets,Xna,我正在使用C#Sockets,我需要在异步回调中返回一个值,或者以某种方式从方法中获取所需的值并以某种方式返回它。以下是我所拥有的: public class UdpState { public UdpClient u; public IPEndPoint e; } class NetworkListener { private const int port = 1222; public static void ReceiveCallback(IAsyncRe

我正在使用C#Sockets,我需要在异步回调中返回一个值,或者以某种方式从方法中获取所需的值并以某种方式返回它。以下是我所拥有的:

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方法的最后一行,它指出了我想要返回的内容。但是我不能让回调直接返回任何内容。我能做什么呢?

我发现我只能生成一个静态字节[]。它以前不工作,因为您需要初始化它,所以我做了publicstaticbyte[]=newbyte[0]