Исходники
Статьи
Языки программирования
.NET Delphi Visual C++ Borland C++ Builder C/С++ и C# Базы Данных MySQL MSSQL Oracle PostgreSQL Interbase VisualFoxPro Веб-Мастеру PHP HTML Perl Java JavaScript Протоколы AJAX Технология Ajax Освоение Ajax Сети Беспроводные сети Локальные сети Сети хранения данных TCP/IP xDSL ATM Операционные системы Windows Linux Wap Книги и учебники
Скрипты
Магазин программиста
|
Ishodniki.Ru » Online книги » Visual Basic по шагам Шаг 137 - Прерывание потока в Windows 2000 – поиск выхода Да конечно, вроде не проблема, есть функция TerminateThread. Не тут-то было. Я провел наверно сегодня часов 6 в поисках решения. Если пользоваться TerminateThread, то приложение, запущенное из VB просто виснет и все, то есть форма исчезает, а сама программа остается в памяти. Думая об этом, я закачал несколько примеров с интернета, например от Philipp Weidmann. Но эффект тот же. Может что-то и с Windows 2000, только пришел я к простому выводу, все нормально только в том случае, если поток заканчивается сам собой, то есть путем выхода из функции потока. Значит все просто, не нужно силой прерывать поток, нужно просто заставить его закончиться самому. Делаем кнопку Terminate: В модуле переменную 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 В данный момент все срабатывает, как положено, без зависаний. Очень надеюсь увидеть Ваши замечания по этому вопросу.
|
Форум Программиста
Новости Обзоры Магазин Программиста Каталог ссылок Поиск Добавить файл Обратная связь Рейтинги
|