A class object is a great way to handle a threaded operation and be able to pass data. The idea is to create the new class object set it's values as needed then the thread calling setting this into action calls a new thread - the class object does not have to worry about async operations as it has it's own thread and when done it cleans itself up all by itself.
Dim obj As New {your class}
obj.Filename = "some file to copy"
Dim thrd As New Thread(AddressOf obj.Worker)
thrd.IsBackground = True
thrd.Start()