Страница 1 из 1

Отмена выполнения по таймауту

Добавлено: 20 янв 2017, 08:56
chirkov.nick
Всем привет. Столкнулся со следующей проблемой. У меня приложение, которое работает с директориями на удаленной машине через расшаренную папку. Если доступ есть (удаленная машина работает, сервер запущен), то все классно. Но вот если доступа нет, то приложение виснет, пытаясь открыть расшаренную папку. Эту ситуацию можно воспроизвести введя \\192.168.1.1 в любой папке сверху, где путь. Винда начинает очень долго думать, а потом выбросит ошибку, что нет доступа к сетевой папке.
Вопрос в том, как можно проконтролировать эту ситуацию и выбросить пользователю ошибку сразу, чтобы он понимал, в чем проблема. Например, завершать выполнение функции (приложения?) по истечении какого-либо промежутка времени. Но я что-то не представляю, как это сделать.
Я пытался использовать следующий метод и ему подобные, типа ловить ошибку при получении директорий файлов. Не сработало.

Re: Отмена выполнения по таймауту

Добавлено: 20 янв 2017, 09:04
Kosist
На портале уже обсуждалось что-то подобное - http://www.labviewportal.org/viewtopic. ... 72&p=72092 . Попробуйте вначале сделать пинг сервера; т.к. его тайм-аут будет быстрее, чем тайм-аут експлорера винды..

Re: Отмена выполнения по таймауту

Добавлено: 20 янв 2017, 14:10
chirkov.nick
Kosist писал(а):На портале уже обсуждалось что-то подобное - http://www.labviewportal.org/viewtopic. ... 72&p=72092 . Попробуйте вначале сделать пинг сервера; т.к. его тайм-аут будет быстрее, чем тайм-аут експлорера винды..

Спасибо за идею с пингом. Но, к сожалению, это не решает мою проблему. Расшаренная папка работает через samba. Таким образом, пинг то может идти, а вот доступа к папке может не быть (например, не запустилась samba).

Re: Отмена выполнения по таймауту

Добавлено: 20 янв 2017, 14:35
dadreamer
chirkov.nick писал(а):Спасибо за идею с пингом. Но, к сожалению, это не решает мою проблему. Расшаренная папка работает через samba. Таким образом, пинг то может идти, а вот доступа к папке может не быть (например, не запустилась samba).
Организуйте простейшую коммуникацию между машинами посредством TCP, UDP, Network Streams и т.п. В таком случае сразу будет понятно, есть или нет связь. Плюсом можно сделать командное управление по заданному алгоритму.

Re: Отмена выполнения по таймауту

Добавлено: 20 янв 2017, 14:58
Borjomy_1
chirkov.nick, Ну а что вы, собственно, хотели? Таймаут для того и сделан, чтобы дать время на соединение. Наверняка в реестре есть этот таймаут... Его можно попробовать подкрутить. Ну а в принципе - выделяйте это в отдельный диалоговый VI, который запускается асинхронно (через палитру Application Control). Тогда ему в любой момент можно вызвать метод "Abort VI".