如果拔下网络电缆,Windows iot将停止UWP应用程序

时间:2017-10-11 17:01:21

标签: networking uwp raspberry-pi iot

我们使用Windows IoT通过TCPClient连接到网络中的另一个应用程序。现在一切都有效,除了让我们感到困惑的一点。当我们从我们的覆盆子Pi(我猜版本2)拔下网络电缆时,立即停止带有GUI的启动应用程序。当我们将电缆插回时,一段时间后再次启动启动应用程序。

我们使用VS2017构建手臂UWP应用程序。

知道如何防止停止申请吗?

2 个答案:

答案 0 :(得分:0)

由于没有您的源代码,我不确定是什么原因引起您的问题。我在raspberry Pi 3中测试过以下的代码,当我拔掉网线时,带有UI的应用程序不会停止。在前台任务中,异步方法建议,请参考Asynchronous programming

服务器

        TcpListener tcpListener = new TcpListener(IPAddress.Any, 6550);
        tcpListener.Start();
        byte[] buffer = new byte[1024];

        String data = string.Empty;

        while (true)
        {
            var client = await tcpListener.AcceptTcpClientAsync();
            var stream = client.GetStream();

            int i = 0;

            // Loop to receive all the data sent by the client.
            do
            {
                i = await stream.ReadAsync(buffer, 0, buffer.Length);
                if(i > 0)
                {
                    // Translate data bytes to a ASCII string.
                    data = System.Text.Encoding.ASCII.GetString(buffer, 0, i);

                    //Display received message
                    txtRServerContent.Text = data;
                }

            } while (i > 0);
        }

<强>客户端:

        TcpClient tcpClient = new TcpClient(AddressFamily.InterNetwork);
        await tcpClient.ConnectAsync(IPAddress.Parse("10.168.197.66"), 14400);            

        // Get a client stream for reading and writing.
        //  Stream stream = client.GetStream();
        NetworkStream stream = tcpClient.GetStream();

        // Buffer to store the response bytes.
        byte[] data = new byte[1024];

        // String to store the response ASCII representation.
        String responseData = String.Empty;

        int count = 0;

        while (true)
        {
            // Read the first batch of the TcpServer response bytes.
            count = await stream.ReadAsync(data, 0, data.Length);
            if (count > 0)
            {
                responseData = System.Text.Encoding.ASCII.GetString(data, 0, count);

                //Dispaly responsed message
                txtClientContent.Text = responseData;
            }
        }

答案 1 :(得分:0)

似乎只有在附加调试器时才会出现此问题。目前,此主题已关闭。