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

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





>

Поки це виглядає дуже схоже на підхід вільних потоків. Ви створюєте екземпляр класу і передаєте його функції, яка запускає фоновий потік. В модулі modMTBack з'являється наступний код:

'Structure to hold IDispatch GUID

Type GUID

Data1 As Long

Data2 As Integer

Data3 As Integer

Data4 (7) As Byte

End Type

Public IID_IDispatch As GUID

Declare Function CoMarshalInterThreadInterfaceInStream Lib _

"ole32.dll" (riid As GUID, ByVal pUnk As IUnknown, _

ppStm As Long) As Long

Declare Function CoGetInterfaceAndReleaseStream Lib _

"ole32.dll" (ByVal pStm As Long, riid As GUID, _

pUnk As IUnknown) As Long

Declare Function CoInitialize Lib "Ole32.dll" (ByVal _

pvReserved As Long) As Long

Declare Sub CoUninitialize Lib "ole32.dll" () p> 'Start the background thread for this object

'using the apartment model

'Returns zero on error

Public Function StartBackgroundThreadApt (ByVal qobj As clsBackground)

Dim threadid As Long

Dim hnd &, res &

Dim threadparam As Long

Dim tobj As Object

Set tobj = qobj

'Proper marshaled approach

InitializeIID

res = CoMarshalInterThreadInterfaceInStream (IID_IDispatch, qobj, threadparam)

If res 0 Then

StartBackgroundThreadApt = 0

Exit Function

End If

hnd = CreateThread (0, 2000, AddressOf BackgroundFuncApt, threadparam, 0, threadid)

If hnd = 0 Then

'Return with zero (error)

Exit Function

End If

'We don't need the thread handle

CloseHandle hnd

StartBackgroundThreadApt = threadid

End Function

Функція StartBackgroundThreadApt трохи складніша ніж її еквівалент при застосуванні підходу вільних потоків. Перша нова функція називається InitializeIID. Вона має наступний код:

'Initialize the GUID structure

Private Sub InitializeIID ()

Static Initialized As Boolean

If Initialized Then Exit Sub

With IID_IDispatch

. Data1 = & H20400

. Data2 = 0

. Data3 = 0

. Data4 (0) = & HC0

. Data4 (7) = & H46

End With

Initialized = True

End Sub

Ви бачите, нам необхідний ідентифікатор інтерфейсу - 16 байтовая структура, яка унікально визначає інтерфейс. Зокрема нам необхідний ідентифікатор інтерфейсу для інтерфейсу IDispatch (детальна інформація щодо IDispatch може бути знайдена в моїй книзі Developing ActiveX Components). Функція InitializeIID просто ініціалізує структуру IID_IDISPATCH до коректним значенням для ідентифікатора інтерфейсу IDispatch. Значення Це значення виходить за допомогою використання утиліти перегляду системного реєстру.

Чому нам необхідний цей ідентифікатор?

Тому що, щоб твердо дотри...


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





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

  • Реферат на тему: The stylistic function of the English article
  • Реферат на тему: Organizational Function of Intonation in English and Ukrainian Languages
  • Реферат на тему: Створення базового класу &Рядок&, рядки ідентифікатора і десяткової рядка. ...
  • Реферат на тему: Використання інтерфейсу Centronics для Керування зовнішнімі прилаштувався
  • Реферат на тему: Розробка функцій для класу інтерфейсу між модулем УШ і модулем протоколу RT ...