Есть "окошечная" программка, в которой создается два треда (один на ком, другой на сокет). После закрытия кома, сокета и thread.abort() на каждый, возникает ошибка, которую я "пропускаю" catch'ем и делаю Application.Exit(). После чего, в списке процессов все еще висит мое приложение! Как от этого избавиться? Хэлп плиз!
Здравствуйте, slash_48rus, Вы писали:
_>Есть "окошечная" программка, в которой создается два треда (один на ком, другой на сокет). После закрытия кома, сокета и thread.abort() на каждый, возникает ошибка, которую я "пропускаю" catch'ем и делаю Application.Exit(). После чего, в списке процессов все еще висит мое приложение! Как от этого избавиться? Хэлп плиз!
Здравствуйте, .Den, Вы писали:
D>Здравствуйте, slash_48rus, Вы писали:
_>>Есть "окошечная" программка, в которой создается два треда (один на ком, другой на сокет). После закрытия кома, сокета и thread.abort() на каждый, возникает ошибка, которую я "пропускаю" catch'ем и делаю Application.Exit(). После чего, в списке процессов все еще висит мое приложение! Как от этого избавиться? Хэлп плиз!
D>Попробуй выставить потокам IsBackground = true
Здравствуйте, slash_48rus, Вы писали:
_>Здравствуйте, .Den, Вы писали:
D>>Здравствуйте, slash_48rus, Вы писали:
_>>>Есть "окошечная" программка, в которой создается два треда (один на ком, другой на сокет). После закрытия кома, сокета и thread.abort() на каждый, возникает ошибка, которую я "пропускаю" catch'ем и делаю Application.Exit(). После чего, в списке процессов все еще висит мое приложение! Как от этого избавиться? Хэлп плиз!
D>>Попробуй выставить потокам IsBackground = true
_>Помогло! Спасибо!
Но лучше все же не маскировать ошибку, а найти и устранить.
Здравствуйте, Andrbig, Вы писали:
A>Здравствуйте, slash_48rus, Вы писали:
_>>Здравствуйте, .Den, Вы писали:
D>>>Здравствуйте, slash_48rus, Вы писали:
_>>>>Есть "окошечная" программка, в которой создается два треда (один на ком, другой на сокет). После закрытия кома, сокета и thread.abort() на каждый, возникает ошибка, которую я "пропускаю" catch'ем и делаю Application.Exit(). После чего, в списке процессов все еще висит мое приложение! Как от этого избавиться? Хэлп плиз!
D>>>Попробуй выставить потокам IsBackground = true
_>>Помогло! Спасибо!
A>Но лучше все же не маскировать ошибку, а найти и устранить.
D>>>>Попробуй выставить потокам IsBackground = true
_>>>Помогло! Спасибо!
A>>Но лучше все же не маскировать ошибку, а найти и устранить.
PM>и не использовать Thread.Abort
Здравствуйте, slash_48rus, Вы писали:
PM>>и не использовать Thread.Abort _>А что же?!
Ну например выставлять какоенибудь событие и когда оно установлено поток сам себя завершит.
Нужно смотреть на то что ты в программе делаешь.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, slash_48rus, Вы писали:
PM>>>и не использовать Thread.Abort _>>А что же?! WH>Ну например выставлять какоенибудь событие и когда оно установлено поток сам себя завершит. WH>Нужно смотреть на то что ты в программе делаешь.
согласен. Abort может повести себя достаточно непредсказуемо, не дав завершить некоторую операцию.
Здравствуйте, slash_48rus, Вы писали:
D>>>>>Попробуй выставить потокам IsBackground = true
_>>>>Помогло! Спасибо!
A>>>Но лучше все же не маскировать ошибку, а найти и устранить.
PM>>и не использовать Thread.Abort
_>А что же?!
После закрытия кома, сокета и thread.abort() на каждый
Корректное закрытие сокета должно приводить к окончанию операций на нем, отпусканию ресурсов, окончанию ожиданий и выходу из потока сокета. Если тебе приходится поток обламывать принудительно, значит проблема либо в архитектуре, либо в реализации. Это ненормальная ситуация — заканчивать сокет по thread.Abort.