После завершения остается тред :(
От: slash_48rus  
Дата: 11.12.06 07:59
Оценка:
Есть "окошечная" программка, в которой создается два треда (один на ком, другой на сокет). После закрытия кома, сокета и thread.abort() на каждый, возникает ошибка, которую я "пропускаю" catch'ем и делаю Application.Exit(). После чего, в списке процессов все еще висит мое приложение! Как от этого избавиться? Хэлп плиз!
Re: После завершения остается тред :(
От: .Den Украина  
Дата: 11.12.06 08:11
Оценка:
Здравствуйте, slash_48rus, Вы писали:

_>Есть "окошечная" программка, в которой создается два треда (один на ком, другой на сокет). После закрытия кома, сокета и thread.abort() на каждый, возникает ошибка, которую я "пропускаю" catch'ем и делаю Application.Exit(). После чего, в списке процессов все еще висит мое приложение! Как от этого избавиться? Хэлп плиз!


Попробуй выставить потокам IsBackground = true
Re[2]: После завершения остается тред :(
От: slash_48rus  
Дата: 11.12.06 08:15
Оценка:
Здравствуйте, .Den, Вы писали:

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


_>>Есть "окошечная" программка, в которой создается два треда (один на ком, другой на сокет). После закрытия кома, сокета и thread.abort() на каждый, возникает ошибка, которую я "пропускаю" catch'ем и делаю Application.Exit(). После чего, в списке процессов все еще висит мое приложение! Как от этого избавиться? Хэлп плиз!


D>Попробуй выставить потокам IsBackground = true


Помогло! Спасибо!
Re[3]: После завершения остается тред :(
От: Andrbig  
Дата: 11.12.06 08:19
Оценка:
Здравствуйте, slash_48rus, Вы писали:

_>Здравствуйте, .Den, Вы писали:


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


_>>>Есть "окошечная" программка, в которой создается два треда (один на ком, другой на сокет). После закрытия кома, сокета и thread.abort() на каждый, возникает ошибка, которую я "пропускаю" catch'ем и делаю Application.Exit(). После чего, в списке процессов все еще висит мое приложение! Как от этого избавиться? Хэлп плиз!


D>>Попробуй выставить потокам IsBackground = true


_>Помогло! Спасибо!


Но лучше все же не маскировать ошибку, а найти и устранить.
Re[4]: После завершения остается тред :(
От: Pavel M. Россия  
Дата: 11.12.06 10:24
Оценка:
Здравствуйте, Andrbig, Вы писали:

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


_>>Здравствуйте, .Den, Вы писали:


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


_>>>>Есть "окошечная" программка, в которой создается два треда (один на ком, другой на сокет). После закрытия кома, сокета и thread.abort() на каждый, возникает ошибка, которую я "пропускаю" catch'ем и делаю Application.Exit(). После чего, в списке процессов все еще висит мое приложение! Как от этого избавиться? Хэлп плиз!


D>>>Попробуй выставить потокам IsBackground = true


_>>Помогло! Спасибо!


A>Но лучше все же не маскировать ошибку, а найти и устранить.


и не использовать Thread.Abort
--------------------------
less think — do more
Re[5]: После завершения остается тред :(
От: slash_48rus  
Дата: 11.12.06 12:02
Оценка:
D>>>>Попробуй выставить потокам IsBackground = true

_>>>Помогло! Спасибо!


A>>Но лучше все же не маскировать ошибку, а найти и устранить.


PM>и не использовать Thread.Abort


А что же?!
Re[6]: После завершения остается тред :(
От: WolfHound  
Дата: 11.12.06 13:07
Оценка: +1
Здравствуйте, slash_48rus, Вы писали:

PM>>и не использовать Thread.Abort

_>А что же?!
Ну например выставлять какоенибудь событие и когда оно установлено поток сам себя завершит.
Нужно смотреть на то что ты в программе делаешь.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[7]: После завершения остается тред :(
От: Pavel M. Россия  
Дата: 12.12.06 08:12
Оценка:
Здравствуйте, WolfHound, Вы писали:

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


PM>>>и не использовать Thread.Abort

_>>А что же?!
WH>Ну например выставлять какоенибудь событие и когда оно установлено поток сам себя завершит.
WH>Нужно смотреть на то что ты в программе делаешь.

согласен. Abort может повести себя достаточно непредсказуемо, не дав завершить некоторую операцию.
--------------------------
less think — do more
Re[6]: После завершения остается тред :(
От: Andrbig  
Дата: 13.12.06 07:02
Оценка:
Здравствуйте, slash_48rus, Вы писали:

D>>>>>Попробуй выставить потокам IsBackground = true


_>>>>Помогло! Спасибо!


A>>>Но лучше все же не маскировать ошибку, а найти и устранить.


PM>>и не использовать Thread.Abort


_>А что же?!


После закрытия кома, сокета и thread.abort() на каждый

Корректное закрытие сокета должно приводить к окончанию операций на нем, отпусканию ресурсов, окончанию ожиданий и выходу из потока сокета. Если тебе приходится поток обламывать принудительно, значит проблема либо в архитектуре, либо в реализации. Это ненормальная ситуация — заканчивать сокет по thread.Abort.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.