1

我有这个问题,其中一部分代码处理速度比预期的要快。我在某些情况下调用 client.BeginConnect 并在处理任何其他代码之前连接它。

例子:

client.BeginConnect(remoteEP, new AsyncCallback(ConnectCallback), client); 

// this code below is preformed later because ConnectCallback is called to quickly 

Debug.WriteLine(client.LocalEndPoint.ToString());

这里的问题是 ConnectCallback 方法有时比代码 Debug.Writeline(....) 执行得更快。我只需要阻止或启用 ConnectCallback 函数,这样 Debug.Writeline 的执行速度就会比 ConnectCallback 快。

感谢帮助。

4

1 回答 1

1

这是一篇很棒的 MSDN 文章:使用异步客户端套接字

private static void ConnectCallback(IAsyncResult ar) {
    try {
        // Retrieve the socket from the state object.
        Socket client = (Socket) ar.AsyncState;

        // Complete the connection.
        client.EndConnect(ar);

        Console.WriteLine("Socket connected to {0}",
            client.RemoteEndPoint.ToString());

        // Signal that the connection has been made.
        connectDone.Set();
    } catch (Exception e) {
        Console.WriteLine(e.ToString());
    }
}

因此,只需将Debug.WriteLine()调用移至您的ConnectCallback()方法中。

于 2012-08-17T11:22:01.930 回答