Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Потоки в Visual Basic

Реферат Потоки в Visual Basic





und

'MTDemo 3 - Multithreading example

'Copyright В© 1997 by Desaware Inc. All Rights Reserved

Option Explicit

Event DoneCounting ()

Dim l As Long

Public Function DoTheCount (ByVal finalval &) As Boolean

Dim s As String

If l = 0 Then

s $ = "In Thread" & App.threadid

Call MessageBox (0, s $, "", 0)

End If

l = l + 1

If l> = finalval Then

l = 0

DoTheCount = True

Call MessageBox (0, "Done with counting", "", 0)

RaiseEvent DoneCounting

End If

End Function

Клас розроблений так, щоб функція DoTheCount могла неодноразово викликатися з безперервного циклу у фоновому потоці. Ми могли б помістити цикл безпосередньо в сам об'єкт, але ви незабаром побачите, що були вагомі причини для проектування об'єкта як показано у прикладі. При першому виклику функції DoTheCount з'являється MessageBox, в якому показано ідентифікатор потоку, за яким ми можемо визначити потік, в якому виконується код. Замість VB команди MessageBox використовується MessageBox API, тому що функція API, як відомо, підтримує безпечне виконання потоків. Другий MessageBox з'являється після того, як закінчений підрахунок і Згенеровано подія, яка вказує, що операція закінчена.

Фоновий потік запускається за допомогою наступного коду у формі frmMTDemo3: Private Sub cmdCreateFree_Click ()

Set c = New clsBackground

StartBackgroundThreadFree c

End Sub

Функція StartBackgroundThreadFree визначена в модулі modMTBack наступним чином:

Declare Function CreateThread Lib "kernel32" _ p> (ByVal lpSecurityAttributes As Long, ByVal _

dwStackSize As Long, ByVal lpStartAddress As Long, _

ByVal lpParameter As Long, ByVal dwCreationFlags _

As Long, lpThreadId As Long) As Long

Declare Function CloseHandle Lib "kernel32" _ p> (ByVal hObject As Long) As Long

'Start the background thread for this object

'using the invalid free threading approach.

Public Function StartBackgroundThreadFree (ByVal qobj As clsBackground)

Dim threadid As Long

Dim hnd &

Dim threadparam As Long

'Free threaded approach

threadparam = ObjPtr (qobj)

hnd = CreateThread (0, 2000, AddressOf _

BackgroundFuncFree, threadparam, 0, threadid)

If hnd = 0 Then

'Return with zero (error)

Exit Function

End If

'We don't need the thread handle

CloseHandle hnd

StartBackgroundThreadFree = threadid

End Function

Функція CreateThread має шість параметрів:

lpSecurityAttributes - Зазвичай встановлюється в нуль, щоб використовувати задані за замовчуванням атрибути захисту. p> dwStackSize - розмір стека. Кожен потік має власний стек. p> lpStartAddress - Адреса пам'яті, де ...


Назад | сторінка 9 з 15 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: The stylistic function of the English article
  • Реферат на тему: Organizational Function of Intonation in English and Ukrainian Languages
  • Реферат на тему: Особливості сюжету повісті і функція її заголовка (І.С. Тургенєв "Післ ...
  • Реферат на тему: Маркетинг як специфічна функція управління на підприємстві (на прикладі філ ...
  • Реферат на тему: Геоекологія підводних трубопроводів (На прикладі Чорноморського відрізка тр ...