Matchlighter, I remembered you were not very happy with the prospect of re-factorization of threading (to make sure you create and use some object in the same thread) and expressed interest in inter-thread invocation.
As other Inquirers asked more question which required me to advise very similar recipes, I'm putting some basic techniques in the form of small articles in Tips/Trick. Here my recent tip which describes inter-thread invocation (especially last usage sample):
Simple Blocking Queue for Thread Communication and Inter-thread Invocation[
^].
Well, I'm sorry this is just C# and not VB.NET. If you're interested, you don't have to know C# detail; you could just created a C# library project, add classes there (generic) and use from VB.NET. Please post a question (as a comment to my answer) if you have questions.
Good luck,
—SA