Исходники
Статьи
Языки программирования
.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 по шагам Шаг 136 - Создание потоков VB Конечно, в Win32 API есть функции CreateThread и остальные, и есть API Text Viewer только вот и проблемы есть. Для того, чтобы создать поток, функцию CreateThread нужно описать не так, как в API Text Viewer, а вот так: Public Declare Function CreateThread Lib "kernel32" (ByVal lpThreadAttributes_ As Any, ByVal dwStackSize As Long, ByVal lpStartAddress As Long,_ lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadId As_ Long) As Long Кроме того, создавать поток нужно не запуская его, а для этого описать константу приостановки. Public Const CREATE_SUSPENDED = &H4 Итак, создадим модуль, а в нем описание функций и самой функции потока. Public Const CREATE_SUSPENDED = &H4 Public Declare Function SuspendThread Lib "kernel32" (ByVal hThread As Long) As Long Public Declare Function ResumeThread Lib "kernel32" (ByVal hThread As Long) As Long Public Declare Function CreateThread Lib "kernel32" (ByVal lpThreadAttributes_ As Any, ByVal dwStackSize As Long, ByVal lpStartAddress As Long,_ lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadId_ As Long) As Long Public Sub ThreadProc() For x = 1 To 100000 Form1.Text1.Text = Str(Val(Form1.Text1.Text + 1)) Next x End Sub На форму кнопки. При загрузке формы создаем поток: Private Sub Form_Load() dwFlags = CREATE_SUSPENDED thread1 = CreateThread(ByVal 0&, ByVal 0&, AddressOf ThreadProc,_ ByVal 0&, dwFlags, ThreadId) If thread1 = 0 Then End End Sub А по нажатию кнопок запускаем или останавливаем: Private Sub Command2_Click() ResumeThread thread1 End Sub Private Sub Command3_Click() SuspendThread thread1 End Sub Вот пробуйте. Запускаете проект, нажимаете Resume и поток работает, нажимаете Suspend и поток останавливается.
|
Форум Программиста
Новости Обзоры Магазин Программиста Каталог ссылок Поиск Добавить файл Обратная связь Рейтинги
|