系统相关
首页 > 系统相关> > c# – 如何(真的)取消Windows Phone上的ConnectAsync请求?

c# – 如何(真的)取消Windows Phone上的ConnectAsync请求?

作者:互联网

我正在开发一个将连接到我的服务器的Windows Phone应用程序.当您按下登录按钮时,它通过使用ConnectAsync来完成此操作.但是,如果服务器已关闭并且您想要取消连接尝试,该怎么办?

这是当前客户端代码完成,我最近尝试关闭套接字连接.假设您知道如何关闭连接后可以轻松实现超时.

    private IPAddress ServerAddress = new IPAddress(0xff00ff00); //Censored my IP
    private int ServerPort = 13000;
    private Socket CurrentSocket;
    private SocketAsyncEventArgs CurrentSocketEventArgs;
    private bool Connecting = false;

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        try
        {
            if (Connecting)
            {
                CurrentSocket.Close();
                CurrentSocket.Dispose();
                CurrentSocketEventArgs.Dispose();
                CurrentSocket = null;
                CurrentSocketEventArgs = null;
            }
            UserData userdata = new UserData();
            userdata.Username = usernameBox.Text;
            userdata.Password = passwordBox.Password;

            Connecting = ConnectToServer(userdata);
        }
        catch (Exception exception)
        {
            Dispatcher.BeginInvoke(() => MessageBox.Show("Error: " + exception.Message));
        }
    }

    private bool ConnectToServer(UserData userdata)
    {
        CurrentSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

        //Create a new SocketAsyncEventArgs
        CurrentSocketEventArgs = new SocketAsyncEventArgs();
        CurrentSocketEventArgs.RemoteEndPoint = new IPEndPoint(ServerAddress, ServerPort);
        CurrentSocketEventArgs.Completed += ConnectionCompleted;
        CurrentSocketEventArgs.UserToken = userdata;
        CurrentSocketEventArgs.SetBuffer(new byte[1024], 0, 1024);

        CurrentSocket.ConnectAsync(CurrentSocketEventArgs);
        return true;
    }

编辑:一个令我印象深刻的想法是,即使服务器软件没有打开,也许是服务器计算机堆叠了请求?那可能吗?

解决方法:

我相信

socket.Close()

应该取消异步连接尝试.可能会有一些例外需要被捕获.

标签:c,asynchronous,network-programming,windows-phone,windows-phone-7-1
来源: https://codeday.me/bug/20190629/1328880.html