So far I understand the basics of threads and how to use simple subs in threads. I now need to assign a function to a thread, and then queue another one.
My example is a computer search program that I'm working on right now. I know this is a lot of code, but It's easier to see what I'm trying to achieve this way.

This code belongs to a button which executes the search
Code:
Public var_locList As New List(Of String) 'I put paths into this

Dim var_temp As List(Of String) = task_MapoutDirectories(var_locList)
'Then display the var_temp of course... but that is obvious
Also, this is what I want to do, but It doesn't work this way:
Code:
Dim thread_dirSearch As System.Threading.Thread
thread_dirSearch = New System.Threading.Thread(AddressOf task_mapoutDirectories(var_locList))
thread_dirSearch.Start()
First function (first task) - Finds all dirs and sub dirs in the specified paths and returns the complete list
Code:
  Public Function task_mapoutDirectories(ByVal var_newList As List(Of String)) As List(Of String)

        Dim var_treeList As New List(Of String)
        Dim var_tempList As New List(Of String)
        Dim var_done As Boolean = False

        Do
            For Each var_location In var_newList
                Try
                    var_tempList.AddRange(Directory.EnumerateDirectories(var_location, "*", SearchOption.TopDirectoryOnly).ToList)
                Catch ex As Exception
                End Try
            Next

            If var_tempList.Count = 0 Then
                var_done = True
            Else
                var_newList.Clear()
                var_newList.AddRange(var_tempList)
                var_treeList.AddRange(var_tempList)
                var_tempList.Clear()
            End If
        Loop Until var_done

        Return var_treeList
    End Function
Second function (second task) - Searches the directory list that I mapped out before for all files matching the search pattern
- This one is not optimized yet, I'm figuring out how to get rid of some of the 'for' statements

Code:
    Public Function task_findFiles(ByVal var_locList As List(Of String), ByVal var_keyList As List(Of String), ByVal var_typeList As List(Of String)) As List(Of String)

        Dim var_fileList As New List(Of String)
        Dim var_matchList As New List(Of String)
        If var_typeList.Count = 0 Then var_typeList.Add("*")
        If var_keyList.Count = 0 Then var_keyList.Add("*")

        For Each var_type In var_typeList
            For Each var_key In var_keyList
                For Each var_location In var_locList

                    Dim var_searchPattern As String = String.Concat("*", var_key, "*")
                    Try
                        var_fileList.AddRange(IO.Directory.GetFiles(var_location, var_searchPattern, SearchOption.TopDirectoryOnly))
                    Catch ex As Exception
                    End Try

                    For Each var_file In var_fileList
                        If var_file.Contains(var_type) Or var_type = "*" Then var_matchList.Add(var_file)
                    Next
                    var_fileList.Clear()
                Next
            Next
        Next

        Return var_fileList
    End Function
Thanks for your answers in advance