I teach an intermediate VB .net course, and have had to rely mostly on my own materials. It covers classes/objects, inheritance/polymorphism, interfaces, debugging, multithreading, collections + implementation of basic data structures, generics, networking (sockets, etc.), and the Entity Framework. I've also been toying with the idea of adding in asynchronous programming (async/await in .net parlance). I have been totally unable to find a good book that covers all of these subjects in a logical, clear, and concise way. Any suggestions?
I've also noticed that there's a massive lack of information on how .net's internal asynchronous stuff works (turns out it actually builds a state machine for you that divides the asynchronous methods into small chunks), which is why I haven't yet added it.
While I like Visual Basic .NET a lot (and I wrote and maintain several programs in it), I think you should shift to C# if possible, because it's the language most .NET apps are written in, and is the one your students will be asked to know, and there are lots of books on the subject. Is it a requirement that it be taught in VB.NET?
You could teach some basics of asynchronous programming using the Background Worker (which is what I actually do use for basic GUIs :) )