У меня проблема с обнаружением потери соединения с сокетом в приложении CF для устройства PDA.
У меня есть статический класс, который имеет статические методы для связи (Connect (), Write (), Disconnect ()). Статический, потому что все формы могут вызывать метод Write.
В методе Connect я вызываю socket.Connect (ipEndpoint);
Но когда устройство не подключено к Wi-Fi, программа останавливается на этой линии примерно на 20 с, что слишком долго. Также, если пользователь запускает метод Write () (сохраняя некоторые данные) и соединение Wi-Fi теряется, пользователь не может взаимодействовать с формой и думает, что приложение перегнуло. Поскольку для соединения с CF-сокетом нет времени ожидания, каков наилучший способ управления поведением сокета?
Моя идея состоит в том, чтобы показать какую-то «форму связи», когда сокет не отвечает в течение 5 секунд, что попытается восстановить соединение. Эта форма будет иметь графический индикатор (вращающиеся часы или что-то в этом роде), чтобы показать пользователю, что программа пытается подключиться, и кнопку выхода, если пользователь решает выйти из приложения. Если socket.connect завершится успешно, я покажу пользователю последнюю использованную форму.
Я предполагаю, что это должно быть сделано с потоками, но так как у меня нет опыта с этим. Мне нужна помощь, как управлять этим поведением.