The comparison between an assembly line and a department store is good for explaining multiprocessing and multitasking too. An assembly line is usually the heart of a huge factory of some sort. The factory might only have one assembly line. That's like computers used to be when huge mainframes had only one processor. Back when there was only one processor, and every program had to use it, sequential batch processing made a lot of sense because it kept that one processor busy all the time.
Today, however, a large data center at Amazon.com or Google uses a server farm where literally thousands of individual computers will process the data. Microsoft's Windows Azure offers container server farms where as many as 300,000 servers are online at the same time. Even individual PC's have dual and quad core chips in them. There are processors everywhere - lots of them. It's OK if they just wait around for something to happen.
A multiprocessing system is one that runs on computer systems that contain more than one processor. Although it's an advanced topic, you can write multiprocessing systems in VB.NET. One way is to use the Open Specifications for Multiprocessing (OpenMP). There is an API available from Microsoft to use it. The .NET libraries necessary to write multiprocessing programs are fully available to VB.NET Express just like the rest of the .NET Framework, but the debugging features necessary to develop programs efficiently are only in the Visual Studio products from Microsoft. Framework 4.0, the VB.NET 2010 version of Framework, features an enhancement to multiprocessing called the Task Parallel Library (TPL). TPL, like OpenMP, is a technology that enables multiprocessing.
There has been another development that has made things different too. In addition to more processors becoming available, each one is much faster than just about anything else in the system. For example, the processor is infinitely faster than you type. It's waaaay faster than your Internet connection can deliver data. It's much faster than your hard drive or your monitor. So, no matter what you do - except for certain error conditions like an infinite loop - the processor in your computer is just going to be waiting for something to happen anyway. (You can check this out yourself by watching the CPU Usage chart or the "System Idle Process" in Windows Task Manager. Press Ctrl-Alt-Del and select the "Processes" or "Performance" tab. It's something to think about if you're considering buying a new computer.)
To use more of your processor, and make your computer more productive, Windows and .NET also support multitasking. In multiprocessing, one program is distributed to multiple CPU's. But with multitasking, one CPU is distributed to multiple programs. The way this works is that Windows parcels out CPU time slices to each program. In this way, the computer appears to be doing a lot of things at the same time. In fact, it's still only doing one thing at a time, but it switches from one to the next so fast that you can't tell that it's happening.
Multitasking support is one of the key differences between .NET and VB6. For example, if a VB6 program starts processing a large data file, everything else stops. (The VB6 DoEvents function lets Windows check to see if other programs need some CPU time, but that's not multitasking.) When you write code in VB for multitasking, it's often called multithreading because your program code will actually start and stop a segment of program statements called a program thread. Several threads running at the same time are said to be running in parallel - which is much easier to code with Framework 4.0's TPL. Writing the actual code to do this is an advanced topic that we won't cover here.

