I\'ve searched high and low trying to figure this out, but everything I\'ve seen so far, people are just telling me to use other methods.
With that out of the way,
I use starksoft-aspen. It's free and open-source.
In the example below the TcpClient initialized within "CreateConnection()" method, but you can also initialize the client by yourself, as well as do it all async.
using Starksoft.Aspen.Proxy;
Socks5ProxyClient proxyClient = new Socks5ProxyClient(
socks5Proxy.Host, socks5Proxy.Port,
socks5Proxy.Username, socks5Proxy.Password);
TcpClient client = proxyClient.CreateConnection(destination.Host,
destination.Port);
NetworkStream stream = client.GetStream();