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

призупинити

ініціалізацію

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 і отримали відповідь, а потім він став недоступним, то коннекшен все одно буде відкритий без усіляких винятків (кешує він його).

Тому спробувати отримати відповідь від сервера потрібно у будь-якому випадку

Open

його

2Mikle: Data.Sql немає такого на жаль.

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

програми

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

Open

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

програми

програми

програми

У такому разі напевно можна обійтися і без вибірки даних (заповнення датасету). А просто перевіряти на sqlConnection.Open()?

Можна, але краще не треба. Зазвичай намагаються відкрити, потім одразу роблять вибірку та закривають. До речі, таким чином благополучно вирішується проблема, описанаivashkanet:

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

Ех ви, програмісти. Якийсь у вас нескінченний цикл виходить. Починаючи із цього повідомлення.

Naum, сміх сміхом, але питання залишаються, отже, пояснення (зокрема. Ваші) не надто доступні розуміння.