Исходники.Ру - Программирование
Исходники
Статьи
Книги и учебники
Скрипты
Новости RSS
Магазин программиста

Ishodniki.Ru » Online книги » Visual Basic по шагам

Шаг 137 - Прерывание потока в Windows 2000 – поиск выхода

Да конечно, вроде не проблема, есть функция TerminateThread. Не тут-то было. Я провел наверно сегодня часов 6 в поисках решения. Если пользоваться TerminateThread, то приложение, запущенное из VB просто виснет и все, то есть форма исчезает, а сама программа остается в памяти. Думая об этом, я закачал несколько примеров с интернета, например от Philipp Weidmann. Но эффект тот же. Может что-то и с Windows 2000, только пришел я к простому выводу, все нормально только в том случае, если поток заканчивается сам собой, то есть путем выхода из функции потока. Значит все просто, не нужно силой прерывать поток, нужно просто заставить его закончиться самому. Делаем кнопку Terminate:

gif/137_1.gif (3425 b)

В модуле переменную x делаем публичную:

Public x As Long

Public Const CREATE_SUSPENDED = &H4

........

А вот по Terminate или при закрытии формы присваиваем ей максимальное значение, что приводит к завершению потока естественным способом.

Private Sub Command1_Click()

x = 100000

End Sub



Private Sub Form_Unload(Cancel As Integer)

Command1_Click

End Sub

В данный момент все срабатывает, как положено, без зависаний. Очень надеюсь увидеть Ваши замечания по этому вопросу.

 

Предыдущий шаг | Оглавление | Следующий шаг

Рассылка новостей
Рейтинги
© 2007, Программирование Исходники.Ру