Як призупинити ініціалізацію програми


lankin, якби була 2005-а студія, то я б запропонував знайти файл program.cs і відредагувати його так:
Але це все одно не вихід.
Чому б не перевіряти, чи запущено SQLServer. Наприклад, кожні 10 секунд Раптом програма запускається не з автозапуску


Ось що я навів:
Значиться ідея така: Опитувати сервер з якомога маленьким таймом через деякий проміжок часу.
Для цього потрібен якнайменш вимогливий запит (оскільки я в цьому не сильний, то вигадав кількість записів або > Ось так ;-)
P.S. На мене це СТРАШНИЙ ВЕЛОСИПЕД. Повинні бути більш правильні способи. Але нічого в голову не лізе і вже набагато краще, ніж threading.Sleep(xxxx)

А я ось як вирішив це діло:
Додано пізніше:Виходить, що прога намагатиметься заповнити датасет і щоразу при невдачі переходитиме по мітці.Питання: чи не буде винятків вискакувати яких?

lankin, світ без міток прекрасний!



Naum, не вийде :thumbs-up
State показує стан об'єкта Connection, а не сервера.
Приклад: До виконання sqlConn.Open() статус Closed, після -- Open.
Якщо сервер недоступний, виняток вивалюється саме на sqlConn.Open()


Або ось що, щойно знайшов, ніколи не користувався і на цій машині (за якою я зараз, немає MS SQL), тому не можу перевірити його дію.
Правда не знаю, чи є в ранніх версіях Framework такий клас.


Я так і думав, що про це хтось-нитка про це скаже :)
Але тут є одна трабла (хоча в нашому випадку вона не проявиться): Якщо мизвернулися до SQLServer і отримали відповідь, а потім він став недоступним, то коннекшен все одно буде відкритий без усіляких винятків (кешує він його).
Тому спробувати отримати відповідь від сервера потрібно у будь-якому випадку


2Mikle: Data.Sql немає такого на жаль.
Додано пізніше:2marcusmae: ти маєш рацію як ніколи:) 2alll:СПС. Відчуваю треба шукати 2005-го студіо.

Я так зробив, але помітив таку фігню: прога звертається до сервера струму 1 раз довго, намагаючись заповнити датасет, а наступні рази просто "пролітає" і все. Чому так?

Якщо база не запущена, то виняток відбуватиметься під час вибірки даних, а ще під час її відкриття. Так що в коді можна поставити .Open() у try-блок, .Close() у finally блок.



У такому разі напевно можна обійтися і без вибірки даних (заповнення датасету). А просто перевіряти на sqlConnection.Open()?
Можна, але краще не треба. Зазвичай намагаються відкрити, потім одразу роблять вибірку та закривають. До речі, таким чином благополучно вирішується проблема, описанаivashkanet:
Якщо ми звернулися до SQLServer і отримали відповідь, а потім він став недоступним, то коннекшен все одно буде відкритий без будь-яких винятків (кешує він його).
Ех ви, програмісти. Якийсь у вас нескінченний цикл виходить. Починаючи із цього повідомлення.
Naum, сміх сміхом, але питання залишаються, отже, пояснення (зокрема. Ваші) не надто доступні розуміння.