http请求按钮。目的地无法到达

时间:2018-11-06 05:17:34

标签: c# webclient

在C#中, 我有一台可以接受HTTP请求作为远程命令的设备。

我已经创建了一个发送这些请求的按钮,虽然它并不完美,但是可以正常工作。

但是,当设备断开连接并且有

  

无法到达目的地

响应应用程序冻结,直到我重新启动它。 我需要一种解决方法,也许有些超时会在1秒后关闭流。

     private void httpBTN_Click(object sender, EventArgs e)
    {
        String URI = "http://192.168.1.118/cgi-bin/aw_cam?cmd=DCB:0&res=0";
        WebClient webClient = new WebClient();
        Stream stream = webClient.OpenRead(URI);
        stream.Close();
    }

1 个答案:

答案 0 :(得分:0)

GUI中长时间运行的操作存在问题:只要操作尚未完成(结果或超时),事件就不会完成。只要事件未完成,其他代码也可以运行。甚至没有通过更改或“是的,我收到关于用户输入的消息”来更新GUI的代码到Windows。您将需要某种形式的多任务处理。

幸运的是,网络是长时间运行Operations的最常见情况之一,因此它具有内置的多任务处理方式(异步功能)。但是,这可能不是最好的开始。作为多任务处理初学者,我建议您在Windows窗体中使用BackgroundWorker。至少直到您掌握了“调用”和“比赛条件”为止。长期来看,异步/等待是更好的模式,但是学习曲线要​​陡得多。