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

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

Итак, создадим модуль, а в нем описание функций и самой функции потока.

gif/136_1.gif (2742 b)

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

На форму кнопки.

gif/136_2.gif (3719 b)

При загрузке формы создаем поток:

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 и поток останавливается.

 

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

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