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