C# + постоянно живущий thread - как?...
От: Win32nipuh  
Дата: 22.09.06 06:55
Оценка:
Есть приложение Windows Form, в котором в главной форме есть "глобальная" переменная SqlConnection m_SqlConnection.
Приложение что-то делате с базой.
Это приложение для покет писи, который будет коннектиться к серверу через беспроводную сеть, возможны потери соединения.

Хотелось бы иметь возможность проверять жива ли коннекция и если нет, то пытаться переконнектиться.

Как лучше реализовать ?

Спасибо!
Re: C# + постоянно живущий thread - как?...
От: stump http://stump-workshop.blogspot.com/
Дата: 22.09.06 07:05
Оценка: +2
Здравствуйте, Win32nipuh, Вы писали:

W>Есть приложение Windows Form, в котором в главной форме есть "глобальная" переменная SqlConnection m_SqlConnection.

W>Приложение что-то делате с базой.
W>Это приложение для покет писи, который будет коннектиться к серверу через беспроводную сеть, возможны потери соединения.

W>Хотелось бы иметь возможность проверять жива ли коннекция и если нет, то пытаться переконнектиться.


W>Как лучше реализовать ?


W>Спасибо!

Это не очень хорошая идея с "голбальным" SqlConnection, поверьте. Гораздо лучше открывать соединение на время запроса или изменения данных и аккуратно закрывать его сразу по окончании запроса. Это общепринятая практика и это особенно актуально для приложения на pocket PC. К тому же в таком режиме работы легко организовать отлов и обработку ошибок, связанных с невозможностью соединения с базой.
Понедельник начинается в субботу
Re[2]: C# + постоянно живущий thread - как?...
От: Win32nipuh  
Дата: 22.09.06 07:21
Оценка:
Здравствуйте, stump, Вы писали:

S>Здравствуйте, Win32nipuh, Вы писали:


W>>Есть приложение Windows Form, в котором в главной форме есть "глобальная" переменная SqlConnection m_SqlConnection.

W>>Приложение что-то делате с базой.
W>>Это приложение для покет писи, который будет коннектиться к серверу через беспроводную сеть, возможны потери соединения.

W>>Хотелось бы иметь возможность проверять жива ли коннекция и если нет, то пытаться переконнектиться.


W>>Как лучше реализовать ?


W>>Спасибо!

S>Это не очень хорошая идея с "голбальным" SqlConnection, поверьте. Гораздо лучше открывать соединение на время запроса или изменения данных и аккуратно закрывать его сразу по окончании запроса. Это общепринятая практика и это особенно актуально для приложения на pocket PC. К тому же в таком режиме работы легко организовать отлов и обработку ошибок, связанных с невозможностью соединения с базой.



Что же — это важное замечание.
Т.е. для покет писи в условиях возможного пропадания коннекта лучше каждый раз переоткрывать.

Не будет ли само открытие коннекции "дорогой" операцией по времени, ресурсам и т.д.?
Кстати, может pooling будет задействован?

(да, используется MSSQLServer 2005 на большой машине)
Re[3]: C# + постоянно живущий thread - как?...
От: stump http://stump-workshop.blogspot.com/
Дата: 22.09.06 07:43
Оценка:
Здравствуйте, Win32nipuh, Вы писали:

W>Здравствуйте, stump, Вы писали:


W>Что же — это важное замечание.

W>Т.е. для покет писи в условиях возможного пропадания коннекта лучше каждый раз переоткрывать.

W>Не будет ли само открытие коннекции "дорогой" операцией по времени, ресурсам и т.д.?

Не дудет.

W>Кстати, может pooling будет задействован?

Будет. Специально для этого ничего писать не надо.
W>(да, используется MSSQLServer 2005 на большой машине)
Понедельник начинается в субботу
Re: C# + постоянно живущий thread - как?...
От: mrozov  
Дата: 22.09.06 08:39
Оценка:
Здравствуйте, Win32nipuh, Вы писали:

W>Есть приложение Windows Form, в котором в главной форме есть "глобальная" переменная SqlConnection m_SqlConnection.

W>Приложение что-то делате с базой.
W>Это приложение для покет писи, который будет коннектиться к серверу через беспроводную сеть, возможны потери соединения.

W>Хотелось бы иметь возможность проверять жива ли коннекция и если нет, то пытаться переконнектиться.


W>Как лучше реализовать ?


W>Спасибо!



Сам я так не делаю, stump объяснил почему.
Но вообще-то у SqlConnection есть событие StateChange, по нему можно отлавливать изменения в жизненном цикле.
С особенностями работы connection pool-а на PocketPC я не знаком, так что не исключаю, что такой подход может оказаться приемлимым.

P.S. В любом случае, инкапсулируй доступ к connection-у методом (типа getConnection), потом если что всегда будет легко сменить стратегию.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.