Кнопка запроса http. пункт назначения недоступен - PullRequest
0 голосов
/ 06 ноября 2018

в с #, У меня есть устройство, которое принимает 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 голосов
/ 06 ноября 2018

Длительные операции в графическом интерфейсе имеют большое значение: до тех пор, пока операция не завершится (результат или тайм-аут), событие не завершится. И пока событие не заканчивается, no другой код может выполняться. Даже код, который обновляет графический интерфейс с изменениями или «да, я получил сообщение о пользовательском вводе» в Windows. Вам понадобится некоторая форма многозадачности.

К счастью, работа в сети является одним из наиболее распространенных случаев длительной работы Операций, поэтому в нее встроены многозадачные способы (асинхронные функции). Однако это может быть не лучшим началом. Как начинающий многозадачник, я бы посоветовал использовать BackgroundWorker в Windows Forms. По крайней мере, пока вы не разберетесь с условиями Invoke и Race. async / await - лучшая модель в долгосрочной перспективе, но с гораздо более крутой кривой обучения.

...