I wrapped this code in a COM interface to be used by VB6 stuff that still hangs around insidiously.
This C# project appears to be a useful sockets wrapper that implements basic ftp functionality.
This is an example of using the Windows API to shell out to a program and wait for the handle to be released.
This might be a useful architecture to handle business rules in a common way.
A bunch of links to vb.net tutorials as well as others.