![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| klein |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 30.5.2006 Где: Київ Репутация: нет Всего: нет |
Всем привет.
С убийством единичных потоков проблем не возникало, а вот с таким кодом:
возникают - после запуска хотябы один раз этой строчки процес висит в диспетчере и не убиваетьса. Использую с myThread Abort(), Suspend(), Interrupt(), а толку 0. Благодарю за внимание. |
|||
|
||||
| 6atoh |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 160 Регистрация: 15.9.2006 Где: Minsk Репутация: 2 Всего: 4 |
Не совсем понимаю, что вы имеете ввиду под "убийством единичных потоков". В приведенном коде вы всего лишь создаете поток, даже не запускаете его. Я вам советую не использовать принудительное завершение потока. Лучше организуйте нормальное завершение функции потока через установку флага.
|
|||
|
||||
| klein |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 30.5.2006 Где: Київ Репутация: нет Всего: нет |
6atoh
Разумеетса что поток я стартую (.Start();), просто подумал что это и так понятно. Впринципе что убивать процес изнутри я понял, а как нет
Т.к. пишу в визуалке, то функция мейн чисто формальная. Тело функции нужно вызывать только раз, потому при запуске флаг стоит на розрешение, а при его сбросе процес уже запущен и никакого эфекта. Или есть какаято функция которую нужно прописать внутри myFunktion которая убивает процес в котором запущена даная же (myFunktion) функция ? Добавлено через 7 минут и 2 секунды При использовании
после выхода из приложения процес висит в диспечере и его приходитьса убивать с диспечера в ручную. |
||||
|
|||||
| 6atoh |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 160 Регистрация: 15.9.2006 Где: Minsk Репутация: 2 Всего: 4 |
На текущий поток можно сослаться через статическое св-во CurrentThread класса Thread:
Ты уверен, что проблема именно в том потоке, который ты прерываешь? Может быть есть еще какие-то потоки, которые упущены из виду? |
||||
|
|||||
| klein |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 30.5.2006 Где: Київ Репутация: нет Всего: нет |
1. CurrentThread полезная фича, спасибо за наводку , (ато я уже мудрил как бы в функцию передавать указатель на поток который запускает этуже функцию).
2. Да, такое бывает только после хотябы однократного запуску(Старта)
а так прога нормально выгружаетса из процесов. Добавлено через 2 минуты и 49 секунд А таких запусков я планирую делать неопределенное количество (по событию нужен новый поток). |
|||
|
||||
| klein |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 30.5.2006 Где: Київ Репутация: нет Всего: нет |
Методом научного тыка нащупал вот что, если делать так -
то все нормально |
|||
|
||||
| 6atoh |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 160 Регистрация: 15.9.2006 Где: Minsk Репутация: 2 Всего: 4 |
По-моему, Abort-у нет разницы, основной это поток, или фоновый. Прерывает он как те, так и другие. Конечно, если ты вызываешь Abort внутри основного потока, который ко всему прочему еще и единственный "оставшийся в живых" поток в приложении, то этот вызов может и не дать никакого эффекта. |
|||
|
||||
| klein |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 30.5.2006 Где: Київ Репутация: нет Всего: нет |
Вот вычитал здесь http://rsdn.ru/article/dotnet/CSThreading1.xml, может кто как и я на эти грабли наступит.
Основные и фоновые потоки По умолчанию потоки создаются как основные, что означает, что приложение не будет завершено, пока один из таких потоков будет исполняться. C# также поддерживает фоновые потоки, они не продлевают жизнь приложению, а завершаются сразу же, как только все основные потоки будут завершены. ПРИМЕЧАНИЕ Изменение статуса потока с основного на фоновый не изменяет его приоритет или статус в планировщике потоков. Статус потока переключается с основного на фоновый при помощи свойства IsBackground, как показано в следующем примере:
Добавлено через 14 минут и 23 секунды
Это сообщение отредактировал(а) klein - 22.9.2010, 10:18 |
||||
|
|||||
| userdab |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 3.9.2010 Репутация: нет Всего: нет |
Посмотрите как здесь убивается поток
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |