Multithreading is somewhat possible in VB though (for example with ActiveX, but it depends on what you exactly want to do... (Though doing it in C++ would be easier)
Anyways, out of curiosity, can I ask why the DLL needs an infinite loop? Because in most cases you could always develop a method without inifinate loops (infinite loops are to be avoided as much as possible). So the solution might not be to find a way to make your DLL multithreaded to run an infinite loop, but to improve the code so it doesn't need an infinite loop to start with.