private void Disconnect() { Networking.DisableRetryConnect = true; Logging.SetStatus("Disconnecting...", Logging.Colors.Yellow); lbLog.Log("Closing OpenVpn..."); ControlHelpers.StartProcess("taskkill", "/F /IM openvpn-gui.exe"); ControlHelpers.StartProcess("taskkill", "/F /IM openvpn.exe"); Network.ResetNetworkInterfaces(); lbLog.Log("Flushing DNS..."); ControlHelpers.StartProcess(@"ipconfig.exe", @"/flushdns"); ControlHelpers.StartProcess(@"ipconfig.exe", @"/registerdns"); btnSaveApps_Click(null, null); //wait for dns flush //await ControlHelpers.Sleep(10000); Network.ClosePrograms(); //**dont add await here it causes hang Networking.DisableDisconnect = true; Network.EnableAllNeworkInterfaces(); Task.Delay(60000).ContinueWith((t) => { Networking.DisableRetryConnect = false; }); //Task.Run(() => //{ //}); //delayReconnect.Start(); Logging.SetStatus("OpenVPN Disconnected", Logging.Colors.Red); }