'Here , this Code is for U .
=================================================================
' Class clsBackgroundOption 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---------------------------------------------
'In the frmMTDemo formPrivate Sub cmdCreateFree_Click()
Set c = New clsBackground
StartBackgroundThreadFree c
End Sub---------------------------------------------
'In modMTBack Declare Function CreateThread Lib "kernel32" (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" _
(ByVal hObject As Long) As LongPublic 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
CloseHandle hnd
StartBackgroundThreadFree = threadid
End FunctionPublic Function BackgroundFuncFree(ByVal param As _
     IUnknown) As Long
Dim qobj As clsBackground
Dim res&
  Set qobj = param
Do While Not qobj.DoTheCount(100000)
Loop
End Function
================================================================= Good Luck !