You could use System.Net.NetworkInformation.Ping to check if the connection is up - then rasdial to reconnect the vpn if the connection is lost.
eg
System.Diagnostics.Process.Start("rasdial.exe", "VPNName Username Password");
You can also disconnect the VPN using
System.Diagnostics.Process.Start("rasdial.exe", "VPNName /d");
Update
Calling rasdial with no arguments returns a list of open connections - might be a more robust solution for you.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…