如何在windows Phone 7.1中实现等待功能

本文关键字:实现 等待 功能 windows Phone | 更新日期: 2023-09-27 18:00:24

我想使用客户端的Ip地址连接到服务器。为了获得服务器的Ip地址,我使用以下代码,它正确地检测到了服务器,但我想在事件处理程序设置HostEndPoint变量后执行一些其他功能,直到我需要等待。我该如何实现它。。以下代码用于扫描是否正确?如果不是,怎么办?

感谢

int startIp = 0;
int EndIp = 255;
int HostPort = 4678;
string = ipPrefix = "192.168.1.";
EndPoint HostEndPoint;
private void ScanHosts()
        {
           Socket clientSocket = new Socket(AddressFamily.InterNetwork,   SocketType.Stream, ProtocolType.Tcp);
        for (startIP = 0; startIP <= endIP; startIP++)
        {
            DnsEndPoint endPoint = new DnsEndPoint(ipPrefix + startIP.ToString(), HostPort);
            try
            {
                SocketAsyncEventArgs socketEventArgs = new SocketAsyncEventArgs();
                socketEventArgs.RemoteEndPoint = endPoint;
                socketEventArgs.UserToken = clientSocket;
                socketEventArgs.Completed += new EventHandler<SocketAsyncEventArgs>(socketEventArgs_Connected);

                clientSocket.ConnectAsync(socketEventArgs);

            }
            catch { }
        }
    }
private void socketEventArgs_Connected(object sender, SocketAsyncEventArgs e)
        {
            if (e.SocketError == SocketError.Success)
            {
                HostEndPoint = e.RemoteEndPoint;                
            }
        }

如何在windows Phone 7.1中实现等待功能

您可以使用AutoResetEvent。FE我的用法:

 AutoResetEvent autoResetLoadDiscTitleAndPersonalDataById = new AutoResetEvent(false);
                                    DataService.LoadDiscTitleAndPersonalDataById(titleToSync.id_on_server, titleInfoXML =>
                                    {
                                        Title TitleInfo = new Title(titleInfoXML);
                                        TitleInfo.UpdateToDb();
                                        autoResetLoadDiscTitleAndPersonalDataById.Set();
                                    });
                                    autoResetLoadDiscTitleAndPersonalDataById.WaitOne();