在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();
}
答案 0 :(得分:0)
GUI中长时间运行的操作存在问题:只要操作尚未完成(结果或超时),事件就不会完成。只要事件未完成,否其他代码也可以运行。甚至没有通过更改或“是的,我收到关于用户输入的消息”来更新GUI的代码到Windows。您将需要某种形式的多任务处理。
幸运的是,网络是长时间运行Operations的最常见情况之一,因此它具有内置的多任务处理方式(异步功能)。但是,这可能不是最好的开始。作为多任务处理初学者,我建议您在Windows窗体中使用BackgroundWorker。至少直到您掌握了“调用”和“比赛条件”为止。长期来看,异步/等待是更好的模式,但是学习曲线要陡得多。