Re: Почему Thread не умирает?
От: tyger Россия  
Дата: 27.07.06 04:52
Оценка:
Здравствуйте, Abuserrr, Вы писали:

<skipped>

A>В большинстве случаев все работает нормально, но где-то раз в три дня интенсивного исспользования m_SendToServerThread подвисает и соответственно остальные сообщения не отсылаються, так как мы ждем отсылки сообщения m_SendToServerThread.Join(); (ждать надо обезатьельно, так как порядок важен). Для решения этой проблемы ввел System.Threading.Timer, но m_SendToServerThread.Abort(); не всегда убивает поток. В тех случаях когда не убивает, поток просто переходит в состояние ThreadState.AbortRequested и никогда из него не выходит Научился воспроизводить это зависание (если клиент и БД находяться на одном компе, а сервер на втором, и в момент отсылки сообщения выключить компьютер с клиентом, то это зависание и происходит, даже если потом востановить соединение), так что тестировать возможно. Сервер не умирает, и до него возможно достучаться с клиента. Вопрос в том, как убить этот поток, чтоб не происходило этого зависания.


A>з.ы. Извиняюсь за такой обьемный вопрос, просто никак не могу решить эту проблему


Хм...
Если это настолько критично, может попробывать "бросить" этот повисшый поток и создать другой заново (предварительно конечно сделав все возможное для удаления повисшего)...
Возможно, итоге (по какому-то внутреннему таймауту) повысший поток и отвалится...
Но так можно поступить только если уже ничего больше не помогает... и последить первое время за расходом памяти и ресурсов....
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.